diff options
| author | Paul Baltescu <pauldb89@gmail.com> | 2013-06-19 15:06:34 +0100 | 
|---|---|---|
| committer | Paul Baltescu <pauldb89@gmail.com> | 2013-06-19 15:06:34 +0100 | 
| commit | 459775095b46b4625ce26ea5a34001ec74ab3aa8 (patch) | |
| tree | 844d1a650a302114ae619d37b8778ab66207a834 /python/src/sa | |
| parent | 02099a01350a41a99ec400e9b29df08a01d88979 (diff) | |
| parent | 0dc7755f7fb1ef15db5a60c70866aa61b6367898 (diff) | |
Merge branch 'master' of https://github.com/redpony/cdec
Diffstat (limited to 'python/src/sa')
| -rw-r--r-- | python/src/sa/_sa.c | 38933 | ||||
| -rw-r--r-- | python/src/sa/alignment.pxi | 10 | ||||
| -rw-r--r-- | python/src/sa/int_list.pxi | 4 | ||||
| -rw-r--r-- | python/src/sa/rule.pxi | 2 | ||||
| -rw-r--r-- | python/src/sa/rulefactory.pxi | 71 | 
5 files changed, 17921 insertions, 21099 deletions
diff --git a/python/src/sa/_sa.c b/python/src/sa/_sa.c index 80f5a440..2e565e22 100644 --- a/python/src/sa/_sa.c +++ b/python/src/sa/_sa.c @@ -1,6 +1,18 @@ -/* Generated by Cython 0.16 on Tue Apr 23 15:15:58 2013 */ +/* Generated by Cython 0.19.1 on Sun Jun  2 14:47:43 2013 */  #define PY_SSIZE_T_CLEAN +#ifndef CYTHON_USE_PYLONG_INTERNALS +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 0 +#else +#include "pyconfig.h" +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 1 +#else +#define CYTHON_USE_PYLONG_INTERNALS 0 +#endif +#endif +#endif  #include "Python.h"  #ifndef Py_PYTHON_H      #error Python headers needed to compile C extensions, please install development version of Python. @@ -11,7 +23,6 @@  #ifndef offsetof  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )  #endif -  #if !defined(WIN32) && !defined(MS_WINDOWS)    #ifndef __stdcall      #define __stdcall @@ -23,22 +34,18 @@      #define __fastcall    #endif  #endif -  #ifndef DL_IMPORT    #define DL_IMPORT(t) t  #endif  #ifndef DL_EXPORT    #define DL_EXPORT(t) t  #endif -  #ifndef PY_LONG_LONG    #define PY_LONG_LONG LONG_LONG  #endif -  #ifndef Py_HUGE_VAL    #define Py_HUGE_VAL HUGE_VAL  #endif -  #ifdef PYPY_VERSION  #define CYTHON_COMPILING_IN_PYPY 1  #define CYTHON_COMPILING_IN_CPYTHON 0 @@ -46,28 +53,28 @@  #define CYTHON_COMPILING_IN_PYPY 0  #define CYTHON_COMPILING_IN_CPYTHON 1  #endif - -#if CYTHON_COMPILING_IN_PYPY -  #define __Pyx_PyCFunction_Call PyObject_Call -#else -  #define __Pyx_PyCFunction_Call PyCFunction_Call -#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 CYTHON_FORMAT_SSIZE_T ""    #define PyInt_FromSsize_t(z) PyInt_FromLong(z)    #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o) -  #define PyNumber_Index(o)    PyNumber_Int(o) -  #define PyIndex_Check(o)     PyNumber_Check(o) +  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \ +                                (PyErr_Format(PyExc_TypeError, \ +                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \ +                                 (PyObject*)0)) +  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \ +                                  !PyComplex_Check(o)) +  #define PyIndex_Check __Pyx_PyIndex_Check    #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)    #define __PYX_BUILD_PY_SSIZE_T "i"  #else    #define __PYX_BUILD_PY_SSIZE_T "n" +  #define CYTHON_FORMAT_SSIZE_T "z" +  #define __Pyx_PyIndex_Check PyIndex_Check  #endif -  #if PY_VERSION_HEX < 0x02060000    #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)    #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type) @@ -75,7 +82,6 @@    #define PyVarObject_HEAD_INIT(type, size) \            PyObject_HEAD_INIT(type) size,    #define PyType_Modified(t) -    typedef struct {       void *buf;       PyObject *obj; @@ -89,7 +95,6 @@       Py_ssize_t *suboffsets;       void *internal;    } Py_buffer; -    #define PyBUF_SIMPLE 0    #define PyBUF_WRITABLE 0x0001    #define PyBUF_FORMAT 0x0004 @@ -101,11 +106,9 @@    #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)    #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)    #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE) -    typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);    typedef void (*releasebufferproc)(PyObject *, Py_buffer *);  #endif -  #if PY_MAJOR_VERSION < 3    #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"    #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \ @@ -115,31 +118,33 @@    #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \            PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)  #endif -  #if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6    #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")  #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_VERSION_HEX > 0x03030000 && defined(PyUnicode_GET_LENGTH) +#if PY_VERSION_HEX < 0x02060000 +  #define Py_TPFLAGS_HAVE_VERSION_TAG 0 +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)    #define CYTHON_PEP393_ENABLED 1 -  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) +  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \ +                                              0 : _PyUnicode_Ready((PyObject *)(op))) +  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)    #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) +  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)  #else    #define CYTHON_PEP393_ENABLED 0 -  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) +  #define __Pyx_PyUnicode_READY(op)       (0) +  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)    #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) +  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))  #endif -  #if PY_MAJOR_VERSION >= 3    #define PyBaseString_Type            PyUnicode_Type    #define PyStringObject               PyUnicodeObject @@ -147,7 +152,6 @@    #define PyString_Check               PyUnicode_Check    #define PyString_CheckExact          PyUnicode_CheckExact  #endif -  #if PY_VERSION_HEX < 0x02060000    #define PyBytesObject                PyStringObject    #define PyBytes_Type                 PyString_Type @@ -166,7 +170,14 @@    #define PyBytes_Concat               PyString_Concat    #define PyBytes_ConcatAndDel         PyString_ConcatAndDel  #endif - +#if PY_MAJOR_VERSION >= 3 +  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) +  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else +  #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ +                                         PyString_Check(obj) || PyUnicode_Check(obj)) +  #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) +#endif  #if PY_VERSION_HEX < 0x02060000    #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)    #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type) @@ -174,9 +185,7 @@  #ifndef PySet_CheckExact    #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)  #endif -  #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -  #if PY_MAJOR_VERSION >= 3    #define PyIntObject                  PyLongObject    #define PyInt_Type                   PyLong_Type @@ -193,11 +202,9 @@    #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask    #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask  #endif -  #if PY_MAJOR_VERSION >= 3    #define PyBoolObject                 PyLongObject  #endif -  #if PY_VERSION_HEX < 0x03020000    typedef long Py_hash_t;    #define __Pyx_PyInt_FromHash_t PyInt_FromLong @@ -206,7 +213,6 @@    #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t    #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t  #endif -  #if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)    #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)    #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) @@ -225,11 +231,9 @@          (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \              (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))  #endif -  #if PY_MAJOR_VERSION >= 3    #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))  #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)) @@ -239,7 +243,6 @@    #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)) @@ -247,6 +250,41 @@    #define __Pyx_NAMESTR(n) (n)    #define __Pyx_DOCSTR(n)  (n)  #endif +#ifndef CYTHON_INLINE +  #if defined(__GNUC__) +    #define CYTHON_INLINE __inline__ +  #elif defined(_MSC_VER) +    #define CYTHON_INLINE __inline +  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +    #define CYTHON_INLINE inline +  #else +    #define CYTHON_INLINE +  #endif +#endif +#ifndef CYTHON_RESTRICT +  #if defined(__GNUC__) +    #define CYTHON_RESTRICT __restrict__ +  #elif defined(_MSC_VER) +    #define CYTHON_RESTRICT __restrict +  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +    #define CYTHON_RESTRICT restrict +  #else +    #define CYTHON_RESTRICT +  #endif +#endif +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { +  /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and +   a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is +   a quiet NaN. */ +  float value; +  memset(&value, 0xFF, sizeof(value)); +  return value; +} +#endif +  #if PY_MAJOR_VERSION >= 3    #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y) @@ -270,9 +308,9 @@  #include <math.h>  #define __PYX_HAVE___sa  #define __PYX_HAVE_API___sa +#include "string.h"  #include "stdio.h"  #include "stdlib.h" -#include "string.h"  #include "strmap.h"  #include "math.h"  #ifdef _OPENMP @@ -283,21 +321,6 @@  #define CYTHON_WITHOUT_ASSERTIONS  #endif - -/* inline attribute */ -#ifndef CYTHON_INLINE -  #if defined(__GNUC__) -    #define CYTHON_INLINE __inline__ -  #elif defined(_MSC_VER) -    #define CYTHON_INLINE __inline -  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -    #define CYTHON_INLINE inline -  #else -    #define CYTHON_INLINE -  #endif -#endif - -/* unused attribute */  #ifndef CYTHON_UNUSED  # if defined(__GNUC__)  #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) @@ -311,26 +334,130 @@  #   define CYTHON_UNUSED  # 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 */ - -#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) -#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s)) - +typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; +                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyBytes_FromString        PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); +#if PY_MAJOR_VERSION < 3 +    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString +    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else +    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString +    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyObject_AsUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromUString(s)  __Pyx_PyObject_FromString((char*)s) +#define __Pyx_PyBytes_FromUString(s)   __Pyx_PyBytes_FromString((char*)s) +#define __Pyx_PyStr_FromUString(s)     __Pyx_PyStr_FromString((char*)s) +#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) +#if PY_MAJOR_VERSION < 3 +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ +    const Py_UNICODE *u_end = u; +    while (*u_end++) ; +    return u_end - u - 1; +} +#else +#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen +#endif +#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode  #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)  #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); -  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*); - +#if CYTHON_COMPILING_IN_CPYTHON  #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif  #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params() { +    PyObject* sys = NULL; +    PyObject* default_encoding = NULL; +    PyObject* ascii_chars_u = NULL; +    PyObject* ascii_chars_b = NULL; +    sys = PyImport_ImportModule("sys"); +    if (sys == NULL) goto bad; +    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); +    if (default_encoding == NULL) goto bad; +    if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { +        __Pyx_sys_getdefaultencoding_not_ascii = 0; +    } else { +        const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); +        char ascii_chars[128]; +        int c; +        for (c = 0; c < 128; c++) { +            ascii_chars[c] = c; +        } +        __Pyx_sys_getdefaultencoding_not_ascii = 1; +        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); +        if (ascii_chars_u == NULL) goto bad; +        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); +        if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { +            PyErr_Format( +                PyExc_ValueError, +                "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", +                default_encoding_c); +            goto bad; +        } +    } +    Py_XDECREF(sys); +    Py_XDECREF(default_encoding); +    Py_XDECREF(ascii_chars_u); +    Py_XDECREF(ascii_chars_b); +    return 0; +bad: +    Py_XDECREF(sys); +    Py_XDECREF(default_encoding); +    Py_XDECREF(ascii_chars_u); +    Py_XDECREF(ascii_chars_b); +    return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params() { +    PyObject* sys = NULL; +    PyObject* default_encoding = NULL; +    char* default_encoding_c; +    sys = PyImport_ImportModule("sys"); +    if (sys == NULL) goto bad; +    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); +    if (default_encoding == NULL) goto bad; +    default_encoding_c = PyBytes_AS_STRING(default_encoding); +    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); +    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); +    Py_DECREF(sys); +    Py_DECREF(default_encoding); +    return 0; +bad: +    Py_XDECREF(sys); +    Py_XDECREF(default_encoding); +    return -1; +} +#endif +#endif +  #ifdef __GNUC__    /* Test for GCC > 2.95 */ @@ -345,8 +472,9 @@ static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);    #define likely(x)   (x)    #define unlikely(x) (x)  #endif /* __GNUC__ */ -     +  static PyObject *__pyx_m; +static PyObject *__pyx_d;  static PyObject *__pyx_b;  static PyObject *__pyx_empty_tuple;  static PyObject *__pyx_empty_bytes; @@ -438,7 +566,7 @@ struct __pyx_t_3_sa__Trie_Node;  struct __pyx_t_3_sa_match_node;  struct __pyx_t_3_sa_Matching; -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":9   * from libc.string cimport memset, strcpy   *    * cdef struct _node:             # <<<<<<<<<<<<<< @@ -452,7 +580,7 @@ struct __pyx_t_3_sa__node {    int val;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":30 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":30   * _init_lower_mask()   *    * cdef struct _BitSet:             # <<<<<<<<<<<<<< @@ -466,7 +594,7 @@ struct __pyx_t_3_sa__BitSet {    int size;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":168 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":168   *     return result   *    * cdef struct _VEB:             # <<<<<<<<<<<<<< @@ -483,7 +611,7 @@ struct __pyx_t_3_sa__VEB {    void **bottom;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":10 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":10   * cdef struct _Trie_Node    # forward decl   *    * cdef struct _Trie_Edge:             # <<<<<<<<<<<<<< @@ -497,7 +625,7 @@ struct __pyx_t_3_sa__Trie_Edge {    struct __pyx_t_3_sa__Trie_Edge *smaller;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":8 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":8   * from libc.string cimport memset, memcpy   *    * cdef struct _Trie_Node    # forward decl             # <<<<<<<<<<<<<< @@ -510,7 +638,7 @@ struct __pyx_t_3_sa__Trie_Node {    int arr_len;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":76 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":76   *    * # linked list structure for storing matches in BaselineRuleFactory   * cdef struct match_node:             # <<<<<<<<<<<<<< @@ -522,7 +650,7 @@ struct __pyx_t_3_sa_match_node {    struct __pyx_t_3_sa_match_node *next;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":172 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":172   *    * # struct used to encapsulate a single matching   * cdef struct Matching:             # <<<<<<<<<<<<<< @@ -537,7 +665,7 @@ struct __pyx_t_3_sa_Matching {    int size;  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":228 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":228   *    *    * cdef class HieroCachingRuleFactory:             # <<<<<<<<<<<<<< @@ -596,7 +724,7 @@ struct __pyx_obj_3_sa_HieroCachingRuleFactory {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":118 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118   *             for arc in node for node in lattice)   *    * def decode_sentence(lattice):             # <<<<<<<<<<<<<< @@ -609,7 +737,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":187 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187   *         fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]   *         if self.word_alignments is not None:   *             fields.append(' '.join('%d-%d' % a for a in self.alignments()))             # <<<<<<<<<<<<<< @@ -626,11 +754,11 @@ struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1187 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187   *         # Online rule extraction and scoring   *         if self.online:   *             f_syms = tuple(word[0][0] for word in fwords)             # <<<<<<<<<<<<<< - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   *                 spanlen = (lex_j - lex_i) + 1   */  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr { @@ -643,7 +771,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":36 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":36   *         logger.info("LCP array completed")   *    *     def compute_stats(self, int max_n):             # <<<<<<<<<<<<<< @@ -674,7 +802,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":122 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122   *    * def encode_words(words):   *     return tuple(sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -691,7 +819,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":21 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21   *    *     def __str__(self):   *         return ' '.join('%s=%s' % feat for feat in self)             # <<<<<<<<<<<<<< @@ -725,7 +853,7 @@ struct __pyx_obj_3_sa_IntList {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":340 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":340   *    *    * cdef class VEBIterator:             # <<<<<<<<<<<<<< @@ -739,7 +867,7 @@ struct __pyx_obj_3_sa_VEBIterator {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":47 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":47   *    *    * cdef class BiLex:             # <<<<<<<<<<<<<< @@ -760,7 +888,7 @@ struct __pyx_obj_3_sa_BiLex {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":354 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":354   *    *    * cdef class VEB:             # <<<<<<<<<<<<<< @@ -774,7 +902,7 @@ struct __pyx_obj_3_sa_VEB {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":121 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)   *    * def encode_words(words):             # <<<<<<<<<<<<<< @@ -787,7 +915,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":5 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":5   * as k most frequent n-grams"""   *    * cdef class LCP:             # <<<<<<<<<<<<<< @@ -801,7 +929,7 @@ struct __pyx_obj_3_sa_LCP {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":9   * from libc.string cimport memset, strcpy   *    * cdef class DataArray:             # <<<<<<<<<<<<<< @@ -820,7 +948,7 @@ struct __pyx_obj_3_sa_DataArray {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":100 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":100   *    *    * cdef class BitSetIterator:             # <<<<<<<<<<<<<< @@ -834,10 +962,10 @@ struct __pyx_obj_3_sa_BitSetIterator {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2115 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116   *         f = Phrase(f_sym)   *         e = Phrase(e_sym) - *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<< + *         a = tuple(self.alignment.link(i, j) for i, j in links)             # <<<<<<<<<<<<<<   *         return (f, e, a, lex_f_i, lex_f_j)   *    */ @@ -848,11 +976,10 @@ struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr {    PyObject *__pyx_v_j;    PyObject *__pyx_t_0;    Py_ssize_t __pyx_t_1; -  PyObject *(*__pyx_t_2)(PyObject *);  }; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":188 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":188   *    *    * cdef class Precomputation:             # <<<<<<<<<<<<<< @@ -873,12 +1000,12 @@ struct __pyx_obj_3_sa_Precomputation {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":190 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":190   *         return ' ||| '.join(fields)   *    *     def alignments(self):             # <<<<<<<<<<<<<<   *         for point in self.word_alignments: - *             yield point/65536, point%65536 + *             yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE   */  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments {    PyObject_HEAD @@ -890,7 +1017,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":125 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125   *    * def decode_words(syms):   *     return tuple(sym_tostring(sym) for sym in syms)             # <<<<<<<<<<<<<< @@ -905,7 +1032,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":6 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":6   * from libc.stdio cimport FILE, fclose, fopen   *    * cdef class SuffixArray:             # <<<<<<<<<<<<<< @@ -921,7 +1048,7 @@ struct __pyx_obj_3_sa_SuffixArray {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":183 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":183   *         return self.f.arity()   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -934,7 +1061,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":7 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":7   * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1   *    * cdef class Alphabet:             # <<<<<<<<<<<<<< @@ -970,7 +1097,7 @@ struct __pyx_obj_3_sa_Rule {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":112 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112   * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)   *     return tuple(((word, None, 1), ) for word in word_ids)             # <<<<<<<<<<<<<< @@ -987,7 +1114,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1884 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1885   *     # Aggregate stats from a training instance   *     # (Extract rules, update counts)   *     def add_instance(self, f_words, e_words, alignment):             # <<<<<<<<<<<<<< @@ -1010,7 +1137,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":74 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74   *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:   *             data = (line.split(' ||| ')[side] for line in fp)             # <<<<<<<<<<<<<< @@ -1027,7 +1154,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":84 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":84   * # in the suffix array; if discontiguous, it is the set of   * # actual locations (packed into an array)   * cdef class PhraseLocation:             # <<<<<<<<<<<<<< @@ -1046,7 +1173,7 @@ struct __pyx_obj_3_sa_PhraseLocation {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":141 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":141   *         return self.syms[i]   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -1061,7 +1188,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2054 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2055   *    *     # Create a rule from source, target, non-terminals, and alignments   *     def form_rule(self, f_i, e_i, f_span, e_span, nt, al):             # <<<<<<<<<<<<<< @@ -1075,7 +1202,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2120 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121   *     # Rule string from rule   *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<< @@ -1092,7 +1219,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2119 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2120   *    *     # Rule string from rule   *     def fmt_rule(self, f, e, a):             # <<<<<<<<<<<<<< @@ -1106,7 +1233,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":20 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":20   *             yield (FD.word(self.names[i]), self.values[i])   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -1119,7 +1246,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":72 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":72   *             self.read_text_data(fp)   *    *     def read_bitext(self, char* filename, int side):             # <<<<<<<<<<<<<< @@ -1133,7 +1260,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":124 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124   *     return tuple(sym_fromstring(word, True) for word in words)   *    * def decode_words(syms):             # <<<<<<<<<<<<<< @@ -1159,7 +1286,7 @@ struct __pyx_obj_3_sa_FeatureVector {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":114 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114   *     return tuple(((word, None, 1), ) for word in word_ids)   *    * def decode_lattice(lattice):             # <<<<<<<<<<<<<< @@ -1172,7 +1299,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":973 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":973   *         return sorted(result);   *    *     def input(self, fwords, meta):             # <<<<<<<<<<<<<< @@ -1254,16 +1381,20 @@ struct __pyx_obj_3_sa___pyx_scope_struct_19_input {    PyObject *__pyx_v_xroot;    Py_ssize_t __pyx_t_0;    Py_ssize_t __pyx_t_1; -  PyObject *__pyx_t_2; +  int __pyx_t_2;    PyObject *__pyx_t_3;    PyObject *__pyx_t_4; -  PyObject *(*__pyx_t_5)(PyObject *); -  Py_ssize_t __pyx_t_6; -  PyObject *(*__pyx_t_7)(PyObject *); +  PyObject *__pyx_t_5; +  int __pyx_t_6; +  Py_ssize_t __pyx_t_7; +  Py_ssize_t __pyx_t_8; +  Py_ssize_t __pyx_t_9; +  PyObject *(*__pyx_t_10)(PyObject *); +  PyObject *(*__pyx_t_11)(PyObject *);  }; -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":23 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":23   *         return ' '.join('%s=%s' % feat for feat in self)   *    * cdef class Scorer:             # <<<<<<<<<<<<<< @@ -1277,8 +1408,8 @@ struct __pyx_obj_3_sa_Scorer {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":8 - * # May need to revisit if things get really tight, though. +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":10 + * cdef int ALIGNMENT_CODE = 1 << 16   *    * cdef class Alignment:             # <<<<<<<<<<<<<<   *     cdef IntList links @@ -1292,7 +1423,7 @@ struct __pyx_obj_3_sa_Alignment {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":118 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":118   * # (entirely C-implemented) _BitSet struct.   * # Very slow; use only for debugging   * cdef class BitSet:             # <<<<<<<<<<<<<< @@ -1305,7 +1436,7 @@ struct __pyx_obj_3_sa_BitSet {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":106 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":106   *    *    * cdef class Sampler:             # <<<<<<<<<<<<<< @@ -1319,7 +1450,7 @@ struct __pyx_obj_3_sa_Sampler {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":8 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":8   *     char* stringmap_word(StrMap *vocab, int i)   *    * cdef class StringMap:             # <<<<<<<<<<<<<< @@ -1333,7 +1464,7 @@ struct __pyx_obj_3_sa_StringMap {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2166 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2167   *     # (Used for EGivenFCoherent)   *     # Return set of (fphrase, lex_i, lex_j)   *     def get_f_phrases(self, f_words):             # <<<<<<<<<<<<<< @@ -1350,7 +1481,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":46 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":46   * cdef int EPSILON = sym_fromstring('*EPS*', True)   *    * cdef class TrieNode:             # <<<<<<<<<<<<<< @@ -1363,7 +1494,7 @@ struct __pyx_obj_3_sa_TrieNode {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":52 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":52   *         self.children = {}   *    * cdef class ExtendedTrieNode(TrieNode):             # <<<<<<<<<<<<<< @@ -1378,7 +1509,7 @@ struct __pyx_obj_3_sa_ExtendedTrieNode {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":109 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":109   *         trie_node_to_map(edge.node, result, prefix, include_zeros)   *    * cdef class TrieMap:             # <<<<<<<<<<<<<< @@ -1393,7 +1524,7 @@ struct __pyx_obj_3_sa_TrieMap {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":115 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115   *    * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc             # <<<<<<<<<<<<<< @@ -1420,7 +1551,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":110 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110   *     return sym_isvar(sym)   *    * def make_lattice(words):             # <<<<<<<<<<<<<< @@ -1451,7 +1582,7 @@ struct __pyx_obj_3_sa_Phrase {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":15 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":15   *         self.values.append(value)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -1467,7 +1598,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":81 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":81   *         free(self.arr)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -1483,7 +1614,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct____iter__ {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":63 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":63   *    *    * cdef class TrieTable:             # <<<<<<<<<<<<<< @@ -1498,7 +1629,7 @@ struct __pyx_obj_3_sa_TrieTable {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":111 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111   *    * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -1515,7 +1646,7 @@ struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr {  }; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":119 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119   *    * def decode_sentence(lattice):   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)             # <<<<<<<<<<<<<< @@ -1551,22 +1682,7 @@ struct __pyx_obj_3_sa_FloatList { -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":8 - *     char* stringmap_word(StrMap *vocab, int i) - *  - * cdef class StringMap:             # <<<<<<<<<<<<<< - *     cdef StrMap *vocab - *     cdef char *word(self, int i) - */ - -struct __pyx_vtabstruct_3_sa_StringMap { -  char *(*word)(struct __pyx_obj_3_sa_StringMap *, int); -  int (*index)(struct __pyx_obj_3_sa_StringMap *, char *); -}; -static struct __pyx_vtabstruct_3_sa_StringMap *__pyx_vtabptr_3_sa_StringMap; - - -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":9   * from libc.string cimport memset, strcpy   *    * cdef class DataArray:             # <<<<<<<<<<<<<< @@ -1581,23 +1697,8 @@ struct __pyx_vtabstruct_3_sa_DataArray {  static struct __pyx_vtabstruct_3_sa_DataArray *__pyx_vtabptr_3_sa_DataArray; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":109 - *         trie_node_to_map(edge.node, result, prefix, include_zeros) - *  - * cdef class TrieMap:             # <<<<<<<<<<<<<< - *  - *     cdef _Trie_Node** root - */ - -struct __pyx_vtabstruct_3_sa_TrieMap { -  struct __pyx_t_3_sa__Trie_Node *(*_insert)(struct __pyx_obj_3_sa_TrieMap *, int *, int); -  struct __pyx_t_3_sa__Trie_Node *(*_contains)(struct __pyx_obj_3_sa_TrieMap *, int *, int); -}; -static struct __pyx_vtabstruct_3_sa_TrieMap *__pyx_vtabptr_3_sa_TrieMap; - - -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":8 - * # May need to revisit if things get really tight, though. +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":10 + * cdef int ALIGNMENT_CODE = 1 << 16   *    * cdef class Alignment:             # <<<<<<<<<<<<<<   *     cdef IntList links @@ -1612,7 +1713,36 @@ struct __pyx_vtabstruct_3_sa_Alignment {  static struct __pyx_vtabstruct_3_sa_Alignment *__pyx_vtabptr_3_sa_Alignment; -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":47 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":4 + * from libc.string cimport strsep, strcpy, strlen + *  + * cdef class Phrase:             # <<<<<<<<<<<<<< + *  + *     def __cinit__(self, words): + */ + +struct __pyx_vtabstruct_3_sa_Phrase { +  int (*chunkpos)(struct __pyx_obj_3_sa_Phrase *, int); +  int (*chunklen)(struct __pyx_obj_3_sa_Phrase *, int); +}; +static struct __pyx_vtabstruct_3_sa_Phrase *__pyx_vtabptr_3_sa_Phrase; + + +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":84 + * # in the suffix array; if discontiguous, it is the set of + * # actual locations (packed into an array) + * cdef class PhraseLocation:             # <<<<<<<<<<<<<< + *     cdef int sa_low + *     cdef int sa_high + */ + +struct __pyx_vtabstruct_3_sa_PhraseLocation { +  int (*contains)(struct __pyx_obj_3_sa_PhraseLocation *, int); +}; +static struct __pyx_vtabstruct_3_sa_PhraseLocation *__pyx_vtabptr_3_sa_PhraseLocation; + + +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":47   *    *    * cdef class BiLex:             # <<<<<<<<<<<<<< @@ -1631,7 +1761,7 @@ struct __pyx_vtabstruct_3_sa_BiLex {  static struct __pyx_vtabstruct_3_sa_BiLex *__pyx_vtabptr_3_sa_BiLex; -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":9   * from libc.string cimport memset, memcpy   *    * cdef class IntList:             # <<<<<<<<<<<<<< @@ -1651,36 +1781,22 @@ struct __pyx_vtabstruct_3_sa_IntList {  static struct __pyx_vtabstruct_3_sa_IntList *__pyx_vtabptr_3_sa_IntList; -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":4 - * from libc.string cimport strsep, strcpy, strlen +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":109 + *         trie_node_to_map(edge.node, result, prefix, include_zeros)   *  - * cdef class Phrase:             # <<<<<<<<<<<<<< + * cdef class TrieMap:             # <<<<<<<<<<<<<<   *  - *     def __cinit__(self, words): - */ - -struct __pyx_vtabstruct_3_sa_Phrase { -  int (*chunkpos)(struct __pyx_obj_3_sa_Phrase *, int); -  int (*chunklen)(struct __pyx_obj_3_sa_Phrase *, int); -}; -static struct __pyx_vtabstruct_3_sa_Phrase *__pyx_vtabptr_3_sa_Phrase; - - -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":84 - * # in the suffix array; if discontiguous, it is the set of - * # actual locations (packed into an array) - * cdef class PhraseLocation:             # <<<<<<<<<<<<<< - *     cdef int sa_low - *     cdef int sa_high + *     cdef _Trie_Node** root   */ -struct __pyx_vtabstruct_3_sa_PhraseLocation { -  int (*contains)(struct __pyx_obj_3_sa_PhraseLocation *, int); +struct __pyx_vtabstruct_3_sa_TrieMap { +  struct __pyx_t_3_sa__Trie_Node *(*_insert)(struct __pyx_obj_3_sa_TrieMap *, int *, int); +  struct __pyx_t_3_sa__Trie_Node *(*_contains)(struct __pyx_obj_3_sa_TrieMap *, int *, int);  }; -static struct __pyx_vtabstruct_3_sa_PhraseLocation *__pyx_vtabptr_3_sa_PhraseLocation; +static struct __pyx_vtabstruct_3_sa_TrieMap *__pyx_vtabptr_3_sa_TrieMap; -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":188 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":188   *    *    * cdef class Precomputation:             # <<<<<<<<<<<<<< @@ -1695,7 +1811,7 @@ struct __pyx_vtabstruct_3_sa_Precomputation {  static struct __pyx_vtabstruct_3_sa_Precomputation *__pyx_vtabptr_3_sa_Precomputation; -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":23 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":23   *         return ' '.join('%s=%s' % feat for feat in self)   *    * cdef class Scorer:             # <<<<<<<<<<<<<< @@ -1709,7 +1825,7 @@ struct __pyx_vtabstruct_3_sa_Scorer {  static struct __pyx_vtabstruct_3_sa_Scorer *__pyx_vtabptr_3_sa_Scorer; -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":9   * from libc.string cimport memset, strcpy, strlen   *    * cdef class FloatList:             # <<<<<<<<<<<<<< @@ -1725,7 +1841,7 @@ struct __pyx_vtabstruct_3_sa_FloatList {  static struct __pyx_vtabstruct_3_sa_FloatList *__pyx_vtabptr_3_sa_FloatList; -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":354 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":354   *    *    * cdef class VEB:             # <<<<<<<<<<<<<< @@ -1741,7 +1857,7 @@ struct __pyx_vtabstruct_3_sa_VEB {  static struct __pyx_vtabstruct_3_sa_VEB *__pyx_vtabptr_3_sa_VEB; -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":7 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":7   * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1   *    * cdef class Alphabet:             # <<<<<<<<<<<<<< @@ -1764,7 +1880,39 @@ struct __pyx_vtabstruct_3_sa_Alphabet {  static struct __pyx_vtabstruct_3_sa_Alphabet *__pyx_vtabptr_3_sa_Alphabet; -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":228 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":6 + * from libc.stdio cimport FILE, fclose, fopen + *  + * cdef class SuffixArray:             # <<<<<<<<<<<<<< + *     cdef DataArray darray + *     cdef IntList sa + */ + +struct __pyx_vtabstruct_3_sa_SuffixArray { +  int (*__pyx___search_high)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); +  int (*__pyx___search_low)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); +  PyObject *(*__pyx___get_range)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int, int); +  PyObject *(*__pyx___lookup_helper)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); +}; +static struct __pyx_vtabstruct_3_sa_SuffixArray *__pyx_vtabptr_3_sa_SuffixArray; + + +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":8 + *     char* stringmap_word(StrMap *vocab, int i) + *  + * cdef class StringMap:             # <<<<<<<<<<<<<< + *     cdef StrMap *vocab + *     cdef char *word(self, int i) + */ + +struct __pyx_vtabstruct_3_sa_StringMap { +  char *(*word)(struct __pyx_obj_3_sa_StringMap *, int); +  int (*index)(struct __pyx_obj_3_sa_StringMap *, char *); +}; +static struct __pyx_vtabstruct_3_sa_StringMap *__pyx_vtabptr_3_sa_StringMap; + + +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":228   *    *    * cdef class HieroCachingRuleFactory:             # <<<<<<<<<<<<<< @@ -1786,27 +1934,10 @@ struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory {    PyObject *(*find_projection)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int *);    int *(*int_arr_extend)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int *, int *, int);    PyObject *(*extract_phrases)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int, int, int, int *, int *, int *, int, int, int); -  struct __pyx_obj_3_sa_IntList *(*create_alignments)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, PyObject *, PyObject *); +  struct __pyx_obj_3_sa_IntList *(*create_alignments)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *);    PyObject *(*extract)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_t_3_sa_Matching *, int *, int);  };  static struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *__pyx_vtabptr_3_sa_HieroCachingRuleFactory; - - -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":6 - * from libc.stdio cimport FILE, fclose, fopen - *  - * cdef class SuffixArray:             # <<<<<<<<<<<<<< - *     cdef DataArray darray - *     cdef IntList sa - */ - -struct __pyx_vtabstruct_3_sa_SuffixArray { -  int (*__pyx___search_high)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); -  int (*__pyx___search_low)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); -  PyObject *(*__pyx___get_range)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int, int); -  PyObject *(*__pyx___lookup_helper)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int); -}; -static struct __pyx_vtabstruct_3_sa_SuffixArray *__pyx_vtabptr_3_sa_SuffixArray;  #ifndef CYTHON_REFNANNY    #define CYTHON_REFNANNY 0  #endif @@ -1861,7 +1992,24 @@ static struct __pyx_vtabstruct_3_sa_SuffixArray *__pyx_vtabptr_3_sa_SuffixArray;  #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)  #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { +    PyTypeObject* tp = Py_TYPE(obj); +    if (likely(tp->tp_getattro)) +        return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 +    if (likely(tp->tp_getattr)) +        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif +    return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ + +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/  static int __Pyx_PyBytes_SingleTailmatch(PyObject* self, PyObject* arg, Py_ssize_t start,                                           Py_ssize_t end, int direction) @@ -1923,11 +2071,18 @@ static int __Pyx_PyBytes_Tailmatch(PyObject* self, PyObject* substr, Py_ssize_t                                     Py_ssize_t end, int direction)  {      if (unlikely(PyTuple_Check(substr))) { -        int result; -        Py_ssize_t i; -        for (i = 0; i < PyTuple_GET_SIZE(substr); i++) { +        Py_ssize_t i, count = PyTuple_GET_SIZE(substr); +        for (i = 0; i < count; i++) { +            int result; +#if CYTHON_COMPILING_IN_CPYTHON              result = __Pyx_PyBytes_SingleTailmatch(self, PyTuple_GET_ITEM(substr, i),                                                     start, end, direction); +#else +            PyObject* sub = PySequence_GetItem(substr, i); +            if (unlikely(!sub)) return -1; +            result = __Pyx_PyBytes_SingleTailmatch(self, sub, start, end, direction); +            Py_DECREF(sub); +#endif              if (result) {                  return result;              } @@ -1951,159 +2106,163 @@ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyOb  static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/ +static void __Pyx_WriteUnraisable(const char *name, int clineno, +                                  int lineno, const char *filename); /*proto*/ +  static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/  static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*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) : \ -                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) { -    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, PyInt_FromSsize_t(i)); -} -#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ -                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \ -                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) { -    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, PyInt_FromSsize_t(i)); -} -#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ -                                                    __Pyx_GetItemInt_Fast(o, i) : \ -                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) { -    if (PyList_CheckExact(o)) { -        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { -            PyObject *r = PyList_GET_ITEM(o, n); -            Py_INCREF(r); -            return r; -        } -    } -    else if (PyTuple_CheckExact(o)) { -        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); -        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { -            PyObject *r = PyTuple_GET_ITEM(o, n); -            Py_INCREF(r); -            return r; -        } -    } -    else if (likely(i >= 0)) { -        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -        if (likely(m && m->sq_item)) { -            return m->sq_item(o, i); -        } +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { +    PyListObject* L = (PyListObject*) list; +    Py_ssize_t len = Py_SIZE(list); +    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { +        Py_INCREF(x); +        PyList_SET_ITEM(list, len, x); +        Py_SIZE(list) = len+1; +        return 0;      } -    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +    return PyList_Append(list, x);  } +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif -static CYTHON_INLINE int __Pyx_NegateNonNeg(int 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); +#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ +    (((size) <= sizeof(Py_ssize_t)) ? \ +    __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ +    __Pyx_GetItemInt_Generic(o, to_py_func(i))) +#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ +    (((size) <= sizeof(Py_ssize_t)) ? \ +    __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ +    __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, +                                                              int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ +    (((size) <= sizeof(Py_ssize_t)) ? \ +    __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ +    __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, +                                                              int wraparound, int boundscheck); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, +                                                     int is_list, int wraparound, int boundscheck); + +static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) { +    int result = PySequence_Contains(seq, item); +    return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) { +    PyObject *method, *result = NULL; +    if (unlikely(!args)) return NULL; +    method = __Pyx_PyObject_GetAttrStr(obj, method_name); +    if (unlikely(!method)) goto bad; +    result = PyObject_Call(method, args, NULL); +    Py_DECREF(method); +bad: +    Py_DECREF(args); +    return result;  } +#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \ +    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3)) +#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \ +    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2)) +#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \ +    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1)) +#define __Pyx_PyObject_CallMethod0(obj, name) \ +    __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple)) -static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) { -    if (likely(PyList_CheckExact(L))) { -        if (PyList_Append(L, x) < 0) return NULL; -        Py_INCREF(Py_None); -        return Py_None; /* this is just to have an accurate signature */ -    } -    else { -        PyObject *r, *m; -        m = __Pyx_GetAttrString(L, "append"); -        if (!m) return NULL; -        r = PyObject_CallFunctionObjArgs(m, x, NULL); -        Py_DECREF(m); -        return r; -    } -} +static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x); /*proto*/  static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/  static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname); -static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( +        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, +        PyObject** py_start, PyObject** py_stop, PyObject** py_slice, +        int has_cstart, int has_cstop, int wraparound); -static CYTHON_INLINE long __Pyx_mod_long(long, long); /* proto */ +static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); +#ifndef __PYX_FORCE_INIT_THREADS +  #define __PYX_FORCE_INIT_THREADS 0 +#endif + +#define UNARY_NEG_WOULD_OVERFLOW(x)            (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) + +static CYTHON_INLINE int __Pyx_mod_int(int, int); /* proto */  static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/ +  static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/ -#define __Pyx_SetItemInt(o, i, v, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ -                                                    __Pyx_SetItemInt_Fast(o, i, v) : \ -                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v)) -static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { -    int r; -    if (!j) return -1; -    r = PyObject_SetItem(o, j, v); -    Py_DECREF(j); -    return r; -} -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v) { -    if (PyList_CheckExact(o)) { -        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); -        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { -            PyObject* old = PyList_GET_ITEM(o, n); -            Py_INCREF(v); -            PyList_SET_ITEM(o, n, v); -            Py_DECREF(old); -            return 1; -        } -    } -    else if (likely(i >= 0)) { -        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; -        if (likely(m && m->sq_ass_item)) { -            return m->sq_ass_item(o, i, v); -        } -    } -    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); -} +#define __Pyx_SetItemInt(o, i, v, size, to_py_func, is_list, wraparound, boundscheck) \ +    (((size) <= sizeof(Py_ssize_t)) ? \ +    __Pyx_SetItemInt_Fast(o, i, v, is_list, wraparound, boundscheck) : \ +    __Pyx_SetItemInt_Generic(o, to_py_func(i), v)) +static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, +                                               int is_list, int wraparound, int boundscheck);  static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */ +#if CYTHON_COMPILING_IN_PYPY +#define __Pyx_PyObject_AsDouble(obj) \ +(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) : \ + likely(PyInt_CheckExact(obj)) ? \ + PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) +#else  #define __Pyx_PyObject_AsDouble(obj) \  ((likely(PyFloat_CheckExact(obj))) ? \   PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) +#endif  static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); +static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */ +  static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,      const char *name, int exact); /*proto*/ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { +    PyListObject* L = (PyListObject*) list; +    Py_ssize_t len = Py_SIZE(list); +    if (likely(L->allocated > len)) { +        Py_INCREF(x); +        PyList_SET_ITEM(list, len, x); +        Py_SIZE(list) = len+1; +        return 0; +    } +    return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +static CYTHON_INLINE int __Pyx_PyDict_Contains(PyObject* item, PyObject* dict, int eq) { +    int result = PyDict_Contains(dict, item); +    return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/ + +static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2, +                                             int is_tuple, int has_known_size, int decref_tuple); + +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, +                                                   Py_ssize_t* p_orig_length, int* p_is_dict); +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, +                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); +  #if PY_VERSION_HEX < 0x02050000  #ifndef PyAnySet_CheckExact  #define PyAnySet_CheckExact(ob) \ @@ -2137,19 +2296,19 @@ static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) {  #endif /* PyAnySet_CheckExact (<= Py2.4) */  #endif /* < Py2.5  */ -static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void); +static CYTHON_INLINE long __Pyx_mod_long(long, long); /* proto */  #if PY_MAJOR_VERSION >= 3  static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {      PyObject *value; -    if (unlikely(d == Py_None)) { -        __Pyx_RaiseNoneIndexingError(); -        return NULL; -    }      value = PyDict_GetItemWithError(d, key);      if (unlikely(!value)) { -        if (!PyErr_Occurred()) -            PyErr_SetObject(PyExc_KeyError, key); +        if (!PyErr_Occurred()) { +            PyObject* args = PyTuple_Pack(1, key); +            if (likely(args)) +                PyErr_SetObject(PyExc_KeyError, args); +            Py_XDECREF(args); +        }          return NULL;      }      Py_INCREF(value); @@ -2159,45 +2318,6 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {      #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)  #endif -static CYTHON_INLINE int __Pyx_div_int(int, int); /* proto */ - -#define UNARY_NEG_WOULD_OVERFLOW(x)            (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) - -static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02040000 -    if (likely(PyList_CheckExact(L)) -        && likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) { -        Py_SIZE(L) -= 1; -        return PyList_GET_ITEM(L, PyList_GET_SIZE(L)); -    } -#if PY_VERSION_HEX >= 0x02050000 -    else if (Py_TYPE(L) == (&PySet_Type)) { -        return PySet_Pop(L); -    } -#endif -#endif -    return PyObject_CallMethod(L, (char*)"pop", NULL); -} - -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 PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/ - -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name); - -#include <string.h> - -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/ - -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /*proto*/ - -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif -  #define __Pyx_CyFunction_USED 1  #include <structmember.h>  #define __Pyx_CYFUNCTION_STATICMETHOD  0x01 @@ -2217,20 +2337,23 @@ typedef struct {      PyObject *func_dict;      PyObject *func_weakreflist;      PyObject *func_name; +    PyObject *func_qualname;      PyObject *func_doc;      PyObject *func_code;      PyObject *func_closure;      PyObject *func_classobj; /* No-args super() class cell */      void *defaults;      int defaults_pyobjects; -    PyObject *defaults_tuple; /* Const defaults tuple */ +    PyObject *defaults_tuple;   /* Const defaults tuple */ +    PyObject *defaults_kwdict;  /* Const kwonly defaults dict */      PyObject *(*defaults_getter)(PyObject *); +    PyObject *func_annotations; /* function annotations dict */  } __pyx_CyFunctionObject;  static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_NewEx(ml, flags, self, module, code) \ -    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, self, module, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, -                                      PyMethodDef *ml, int flags, +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, code) \ +    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, code) +static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, +                                      int flags, PyObject* qualname,                                        PyObject *self, PyObject *module,                                        PyObject* code);  static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, @@ -2238,8 +2361,25 @@ static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,                                                           int pyobjects);  static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,                                                              PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, +                                                             PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, +                                                              PyObject *dict);  static int __Pyx_CyFunction_init(void); +static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L); /*proto*/ + +#include <string.h> + +static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ + +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ + +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 PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ +  static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);  static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *); @@ -2272,36 +2412,39 @@ 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, int clineno, -                                  int lineno, const char *filename); /*proto*/ -  static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); /*proto*/  #define __Pyx_Generator_USED  #include <structmember.h> +#include <frameobject.h>  typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *);  typedef struct {      PyObject_HEAD      __pyx_generator_body_t body;      PyObject *closure; -    int is_running; -    int resume_label;      PyObject *exc_type;      PyObject *exc_value;      PyObject *exc_traceback;      PyObject *gi_weakreflist;      PyObject *classobj; +    PyObject *yieldfrom; +    int resume_label; +    char is_running;  // using T_BOOL for property below requires char value  } __pyx_GeneratorObject;  static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,                                                    PyObject *closure);  static int __pyx_Generator_init(void); +static int __Pyx_Generator_clear(PyObject* self); +#if 1 || PY_VERSION_HEX < 0x030300B0 +static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); +#else +#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) +#endif  static int __Pyx_check_binary_version(void);  static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/ -static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ -  typedef struct {      int code_line;      PyCodeObject* code_object; @@ -2322,70 +2465,71 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line,  static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ +/* Module declarations from 'libc.string' */ +  /* Module declarations from 'libc.stdio' */  /* Module declarations from 'libc.stdlib' */ -/* Module declarations from 'libc.string' */ -  /* Module declarations from 'libc.math' */  /* Module declarations from '_sa' */ -static PyTypeObject *__pyx_ptype_3_sa_FloatList = 0; +static PyTypeObject *__pyx_ptype_3_sa_HieroCachingRuleFactory = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = 0;  static PyTypeObject *__pyx_ptype_3_sa_IntList = 0; -static PyTypeObject *__pyx_ptype_3_sa_FeatureVector = 0; -static PyTypeObject *__pyx_ptype_3_sa_Phrase = 0; -static PyTypeObject *__pyx_ptype_3_sa_Rule = 0; -static PyTypeObject *__pyx_ptype_3_sa_StringMap = 0; -static PyTypeObject *__pyx_ptype_3_sa_DataArray = 0; -static PyTypeObject *__pyx_ptype_3_sa_Alignment = 0; -static PyTypeObject *__pyx_ptype_3_sa_BiLex = 0; -static PyTypeObject *__pyx_ptype_3_sa_BitSetIterator = 0; -static PyTypeObject *__pyx_ptype_3_sa_BitSet = 0;  static PyTypeObject *__pyx_ptype_3_sa_VEBIterator = 0; +static PyTypeObject *__pyx_ptype_3_sa_BiLex = 0;  static PyTypeObject *__pyx_ptype_3_sa_VEB = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = 0;  static PyTypeObject *__pyx_ptype_3_sa_LCP = 0; -static PyTypeObject *__pyx_ptype_3_sa_Alphabet = 0; -static PyTypeObject *__pyx_ptype_3_sa_TrieMap = 0; +static PyTypeObject *__pyx_ptype_3_sa_DataArray = 0; +static PyTypeObject *__pyx_ptype_3_sa_BitSetIterator = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = 0;  static PyTypeObject *__pyx_ptype_3_sa_Precomputation = 0; -static PyTypeObject *__pyx_ptype_3_sa_SuffixArray = 0; -static PyTypeObject *__pyx_ptype_3_sa_TrieNode = 0; -static PyTypeObject *__pyx_ptype_3_sa_ExtendedTrieNode = 0; -static PyTypeObject *__pyx_ptype_3_sa_TrieTable = 0; -static PyTypeObject *__pyx_ptype_3_sa_PhraseLocation = 0; -static PyTypeObject *__pyx_ptype_3_sa_Sampler = 0; -static PyTypeObject *__pyx_ptype_3_sa_HieroCachingRuleFactory = 0; -static PyTypeObject *__pyx_ptype_3_sa_Scorer = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct____iter__ = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_18_alignments = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = 0; +static PyTypeObject *__pyx_ptype_3_sa_SuffixArray = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_16___str__ = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_18_alignments = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_19_input = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa_Alphabet = 0; +static PyTypeObject *__pyx_ptype_3_sa_Rule = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa_PhraseLocation = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_28___str__ = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = 0; +static PyTypeObject *__pyx_ptype_3_sa_FeatureVector = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_19_input = 0; +static PyTypeObject *__pyx_ptype_3_sa_Scorer = 0; +static PyTypeObject *__pyx_ptype_3_sa_Alignment = 0; +static PyTypeObject *__pyx_ptype_3_sa_BitSet = 0; +static PyTypeObject *__pyx_ptype_3_sa_Sampler = 0; +static PyTypeObject *__pyx_ptype_3_sa_StringMap = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases = 0; +static PyTypeObject *__pyx_ptype_3_sa_TrieNode = 0; +static PyTypeObject *__pyx_ptype_3_sa_ExtendedTrieNode = 0; +static PyTypeObject *__pyx_ptype_3_sa_TrieMap = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice = 0; +static PyTypeObject *__pyx_ptype_3_sa_Phrase = 0;  static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_27___iter__ = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_28___str__ = 0; -static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct____iter__ = 0; +static PyTypeObject *__pyx_ptype_3_sa_TrieTable = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr = 0; +static PyTypeObject *__pyx_ptype_3_sa_FloatList = 0; +static int __pyx_v_3_sa_ALIGNMENT_CODE;  static int __pyx_v_3_sa_MIN_BOTTOM_SIZE;  static int __pyx_v_3_sa_MIN_BOTTOM_BITS;  static int __pyx_v_3_sa_LOWER_MASK[32]; @@ -2437,6 +2581,7 @@ int __pyx_module_is_main__sa = 0;  static PyObject *__pyx_builtin_open;  static PyObject *__pyx_builtin_IndexError;  static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_ValueError;  static PyObject *__pyx_builtin_TypeError;  static PyObject *__pyx_builtin_enumerate;  static PyObject *__pyx_builtin_map; @@ -2458,7 +2603,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis  static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, char *__pyx_v_filename); /* proto */  static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_size, int __pyx_v_increment, int __pyx_v_initial_len); /* proto */  static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_val); /* proto */ +static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val); /* proto */  static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end); /* proto */  static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_end); /* proto */  static PyObject *__pyx_pf_3_sa_7IntList_10sort(struct __pyx_obj_3_sa_IntList *__pyx_v_self); /* proto */ @@ -2676,58 +2821,114 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_4__iter__(struct __pyx_obj_3_sa_F  static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str___genexpr(PyObject *__pyx_self); /* proto */  static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_FeatureVector *__pyx_v_self); /* proto */  static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_self, PyObject *__pyx_v_models); /* proto */ +static PyObject *__pyx_tp_new_3_sa_HieroCachingRuleFactory(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_IntList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_VEBIterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_VEB(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_LCP(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_DataArray(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_BitSetIterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Precomputation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_SuffixArray(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Alphabet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_PhraseLocation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_FeatureVector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Scorer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Alignment(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_BitSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Sampler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_StringMap(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_TrieNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_ExtendedTrieNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_TrieMap(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_Phrase(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_TrieTable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_3_sa_FloatList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/  static char __pyx_k_1[] = ".gz";  static char __pyx_k_2[] = "Requested index %d of %d-length FloatList";  static char __pyx_k_3[] = "IntList[";  static char __pyx_k_4[] = ",";  static char __pyx_k_5[] = "]";  static char __pyx_k_6[] = "len="; -static char __pyx_k_7[] = "Requested index %d of %d-length IntList"; -static char __pyx_k_8[] = "Requested index %d:%d of %d-length IntList"; -static char __pyx_k_9[] = "Illegal key type %s for IntList"; -static char __pyx_k_13[] = "%s "; -static char __pyx_k_14[] = "\n"; -static char __pyx_k_18[] = " ||| "; -static char __pyx_k_21[] = "%d "; -static char __pyx_k_25[] = "%s %d "; -static char __pyx_k_27[] = "write_enhanced_handle"; -static char __pyx_k_31[] = "-"; -static char __pyx_k_35[] = "%d-%d "; -static char __pyx_k_42[] = "%d-%d out of bounds (I=%d,J=%d) in line %d\n"; -static char __pyx_k_45[] = ""; -static char __pyx_k_46[] = "Sort error in CLex"; -static char __pyx_k_48[] = "    "; -static char __pyx_k_50[] = "%d %f %f "; -static char __pyx_k_52[] = "%d %s "; -static char __pyx_k_56[] = "%s %s %.6f %.6f\n"; -static char __pyx_k_58[] = "  ("; -static char __pyx_k_59[] = ")"; -static char __pyx_k_60[] = "Constructing LCP array"; -static char __pyx_k_62[] = "LCP array completed"; -static char __pyx_k_64[] = "[%s,%d]"; -static char __pyx_k_65[] = "[%s]"; -static char __pyx_k_66[] = "\\"; -static char __pyx_k_67[] = " "; -static char __pyx_k_68[] = "Invalid LHS symbol: %d"; -static char __pyx_k_69[] = "%d-%d"; -static char __pyx_k_70[] = "precompute_secondary_rank"; -static char __pyx_k_71[] = "train_max_initial_size"; -static char __pyx_k_72[] = "Precomputing frequent intersections"; -static char __pyx_k_74[] = "    Computing inverted indexes..."; -static char __pyx_k_76[] = "    Computing collocations..."; -static char __pyx_k_78[] = "        %d sentences"; -static char __pyx_k_83[] = "X "; -static char __pyx_k_84[] = "ERROR: unexpected pattern %s in set of precomputed collocations"; -static char __pyx_k_85[] = "RANK %d\tCOUNT, COST: %d    %d\tCUMUL: %d, %d"; -static char __pyx_k_86[] = "Precomputed collocations for %d patterns out of %d possible (upper bound %d)"; -static char __pyx_k_87[] = "Precomputed inverted index for %d patterns "; -static char __pyx_k_88[] = "Precomputation took %f seconds"; -static char __pyx_k_89[] = "    Bucket sort took %f seconds"; -static char __pyx_k_90[] = "    Refining, sort depth = %d"; -static char __pyx_k_91[] = "    Refinement took %f seconds"; -static char __pyx_k_92[] = "    Finalizing sort..."; -static char __pyx_k_94[] = "Suffix array construction took %f seconds"; -static char __pyx_k_95[] = "Unexpected condition found in q3sort: sort from %d to %d"; +static char __pyx_k_7[] = "%s not in IntList"; +static char __pyx_k_8[] = "Requested index %d of %d-length IntList"; +static char __pyx_k_9[] = "Requested index %d:%d of %d-length IntList"; +static char __pyx_k_10[] = "Illegal key type %s for IntList"; +static char __pyx_k_14[] = "%s "; +static char __pyx_k_15[] = "\n"; +static char __pyx_k_19[] = " ||| "; +static char __pyx_k_23[] = "%d "; +static char __pyx_k_27[] = "%s %d "; +static char __pyx_k_29[] = "write_enhanced_handle"; +static char __pyx_k_33[] = "-"; +static char __pyx_k_37[] = "%d-%d "; +static char __pyx_k_44[] = "%d-%d out of bounds (I=%d,J=%d) in line %d\n"; +static char __pyx_k_47[] = ""; +static char __pyx_k_48[] = "Sort error in CLex"; +static char __pyx_k_50[] = "    "; +static char __pyx_k_52[] = "%d %f %f "; +static char __pyx_k_54[] = "%d %s "; +static char __pyx_k_58[] = "%s %s %.6f %.6f\n"; +static char __pyx_k_60[] = "  ("; +static char __pyx_k_61[] = ")"; +static char __pyx_k_62[] = "Constructing LCP array"; +static char __pyx_k_64[] = "LCP array completed"; +static char __pyx_k_66[] = "[%s,%d]"; +static char __pyx_k_67[] = "[%s]"; +static char __pyx_k_68[] = "\\"; +static char __pyx_k_69[] = " "; +static char __pyx_k_70[] = "Invalid LHS symbol: %d"; +static char __pyx_k_71[] = "%d-%d"; +static char __pyx_k_72[] = "precompute_secondary_rank"; +static char __pyx_k_73[] = "train_max_initial_size"; +static char __pyx_k_74[] = "Precomputing frequent intersections"; +static char __pyx_k_76[] = "    Computing inverted indexes..."; +static char __pyx_k_78[] = "    Computing collocations..."; +static char __pyx_k_80[] = "        %d sentences"; +static char __pyx_k_85[] = "X "; +static char __pyx_k_86[] = "ERROR: unexpected pattern %s in set of precomputed collocations"; +static char __pyx_k_87[] = "RANK %d\tCOUNT, COST: %d    %d\tCUMUL: %d, %d"; +static char __pyx_k_88[] = "Precomputed collocations for %d patterns out of %d possible (upper bound %d)"; +static char __pyx_k_89[] = "Precomputed inverted index for %d patterns "; +static char __pyx_k_90[] = "Precomputation took %f seconds"; +static char __pyx_k_91[] = "    Bucket sort took %f seconds"; +static char __pyx_k_92[] = "    Refining, sort depth = %d"; +static char __pyx_k_93[] = "    Refinement took %f seconds"; +static char __pyx_k_94[] = "    Finalizing sort..."; +static char __pyx_k_96[] = "Suffix array construction took %f seconds"; +static char __pyx_k_97[] = "Unexpected condition found in q3sort: sort from %d to %d";  static char __pyx_k__0[] = "0";  static char __pyx_k__1[] = "1";  static char __pyx_k__E[] = "E"; @@ -2743,50 +2944,56 @@ static char __pyx_k__r[] = "r";  static char __pyx_k__w[] = "w";  static char __pyx_k__x[] = "x";  static char __pyx_k__y[] = "y"; -static char __pyx_k_100[] = "Sampling strategy: uniform, max sample size = %d"; -static char __pyx_k_101[] = "Sampling strategy: no sampling"; -static char __pyx_k_103[] = "require_aligned_terminal"; -static char __pyx_k_104[] = "require_aligned_chunks"; -static char __pyx_k_105[] = "[X]"; -static char __pyx_k_106[] = "Must specify an alignment object"; -static char __pyx_k_108[] = "Reading precomputed data from file %s... "; -static char __pyx_k_109[] = "Precomputation done with max nonterminals %d, decoder uses %d"; -static char __pyx_k_110[] = "Precomputation done with max terminals %d, decoder uses %d"; -static char __pyx_k_111[] = "Precomputation done with max initial size %d, decoder uses %d"; -static char __pyx_k_112[] = "Precomputation done with min gap size %d, decoder uses %d"; -static char __pyx_k_113[] = "Converting %d hash keys on precomputed inverted index... "; -static char __pyx_k_114[] = "Converting %d hash keys on precomputed collocations... "; -static char __pyx_k_115[] = "Processing precomputations took %f seconds"; -static char __pyx_k_116[] = "{"; -  static char __pyx_k_117[] = "("; -static char __pyx_k_118[] = "}"; -static char __pyx_k_119[] = "get_precomputed_collocation"; -static char __pyx_k_120[] = "double binary"; -static char __pyx_k_121[] = "Keyword trie error"; -static char __pyx_k_123[] = "get_all_nodes_isteps_away"; -static char __pyx_k_124[] = "Total time for rule lookup, extraction, and scoring = %f seconds"; -static char __pyx_k_125[] = "    Extract time = %f seconds"; -static char __pyx_k_126[] = "    Intersect time = %f seconds"; -static char __pyx_k_127[] = "No aligned terminals"; -static char __pyx_k_128[] = "Unaligned chunk"; -static char __pyx_k_129[] = "Gaps are not tight phrases"; -static char __pyx_k_130[] = "Inside edges of preceding subphrase are not tight"; -static char __pyx_k_131[] = "Inside edges of following subphrase are not tight"; -static char __pyx_k_132[] = "Subphrase [%d, %d] failed integrity check"; -static char __pyx_k_133[] = "Didn't extract anything from [%d, %d] -> [%d, %d]"; -static char __pyx_k_134[] = "Unable to extract basic phrase"; -static char __pyx_k_137[] = "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi"; -static char __pyx_k_138[] = "{0}-{1}"; -static char __pyx_k_139[] = "[X] ||| {0} ||| {1} ||| {2}"; -static char __pyx_k_140[] = "------------------------------"; -static char __pyx_k_142[] = "         Online Stats         "; -static char __pyx_k_146[] = " : "; -static char __pyx_k_152[] = "OnlineFeatureContext"; -static char __pyx_k_155[] = "%s=%s"; -static char __pyx_k_157[] = "/home/paulb/workspace/cdec/python/src/sa/_sa.pyx"; -static char __pyx_k_160[] = "cdec.sa"; -static char __pyx_k_164[] = "/home/paulb/workspace/cdec/python/src/sa/sym.pxi"; -static char __pyx_k_175[] = "*EPS*"; +static char __pyx_k_102[] = "Sampling strategy: uniform, max sample size = %d"; +static char __pyx_k_103[] = "Sampling strategy: no sampling"; +static char __pyx_k_105[] = "require_aligned_terminal"; +static char __pyx_k_106[] = "require_aligned_chunks"; +static char __pyx_k_107[] = "[X]"; +static char __pyx_k_108[] = "Must specify an alignment object"; +static char __pyx_k_110[] = "HieroCachingRuleFactory.__cinit__.<locals>.<lambda>"; +static char __pyx_k_111[] = "Reading precomputed data from file %s... "; +static char __pyx_k_112[] = "Precomputation done with max nonterminals %d, decoder uses %d"; +static char __pyx_k_113[] = "Precomputation done with max terminals %d, decoder uses %d"; +static char __pyx_k_114[] = "Precomputation done with max initial size %d, decoder uses %d"; +static char __pyx_k_115[] = "Precomputation done with min gap size %d, decoder uses %d"; +static char __pyx_k_116[] = "Converting %d hash keys on precomputed inverted index... "; +static char __pyx_k_117[] = "Converting %d hash keys on precomputed collocations... "; +static char __pyx_k_118[] = "Processing precomputations took %f seconds"; +static char __pyx_k_119[] = "{"; +  static char __pyx_k_120[] = "("; +static char __pyx_k_121[] = "}"; +static char __pyx_k_122[] = "get_precomputed_collocation"; +static char __pyx_k_123[] = "double binary"; +static char __pyx_k_124[] = "HieroCachingRuleFactory.input.<locals>.lambda4.<locals>.<lambda>"; +static char __pyx_k_125[] = "Keyword trie error"; +static char __pyx_k_127[] = "HieroCachingRuleFactory.input.<locals>.<lambda>"; +static char __pyx_k_128[] = "get_all_nodes_isteps_away"; +static char __pyx_k_129[] = "Total time for rule lookup, extraction, and scoring = %f seconds"; +static char __pyx_k_130[] = "    Extract time = %f seconds"; +static char __pyx_k_131[] = "    Intersect time = %f seconds"; +static char __pyx_k_132[] = "No aligned terminals"; +static char __pyx_k_133[] = "Unaligned chunk"; +static char __pyx_k_134[] = "Gaps are not tight phrases"; +static char __pyx_k_135[] = "Inside edges of preceding subphrase are not tight"; +static char __pyx_k_136[] = "Inside edges of following subphrase are not tight"; +static char __pyx_k_137[] = "Subphrase [%d, %d] failed integrity check"; +static char __pyx_k_138[] = "Didn't extract anything from [%d, %d] -> [%d, %d]"; +static char __pyx_k_139[] = "Unable to extract basic phrase"; +static char __pyx_k_143[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi"; +static char __pyx_k_144[] = "HieroCachingRuleFactory.add_instance.<locals>.extract"; +static char __pyx_k_146[] = "HieroCachingRuleFactory.form_rule.<locals>.<lambda>"; +static char __pyx_k_149[] = "{0}-{1}"; +static char __pyx_k_150[] = "[X] ||| {0} ||| {1} ||| {2}"; +static char __pyx_k_151[] = "------------------------------"; +static char __pyx_k_153[] = "         Online Stats         "; +static char __pyx_k_157[] = " : "; +static char __pyx_k_163[] = "OnlineFeatureContext"; +static char __pyx_k_166[] = "HieroCachingRuleFactory.get_f_phrases.<locals>.extract"; +static char __pyx_k_167[] = "%s=%s"; +static char __pyx_k_169[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/_sa.pyx"; +static char __pyx_k_172[] = "cdec.sa"; +static char __pyx_k_176[] = "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi"; +static char __pyx_k_187[] = "*EPS*";  static char __pyx_k__FE[] = "FE";  static char __pyx_k__al[] = "al";  static char __pyx_k__fe[] = "fe"; @@ -2795,7 +3002,6 @@ static char __pyx_k__nt[] = "nt";  static char __pyx_k__sa[] = "sa";  static char __pyx_k__wc[] = "wc";  static char __pyx_k___sa[] = "_sa"; -static char __pyx_k__add[] = "add";  static char __pyx_k__arr[] = "arr";  static char __pyx_k__cmp[] = "cmp";  static char __pyx_k__col[] = "col"; @@ -2821,6 +3027,7 @@ static char __pyx_k__sym[] = "sym";  static char __pyx_k__vec[] = "vec";  static char __pyx_k__zip[] = "zip";  static char __pyx_k__NULL[] = "NULL"; +static char __pyx_k__args[] = "args";  static char __pyx_k__dist[] = "dist";  static char __pyx_k__gzip[] = "gzip";  static char __pyx_k__high[] = "high"; @@ -2831,6 +3038,7 @@ static char __pyx_k__meta[] = "meta";  static char __pyx_k__name[] = "name";  static char __pyx_k__open[] = "open";  static char __pyx_k__seek[] = "seek"; +static char __pyx_k__send[] = "send";  static char __pyx_k__side[] = "side";  static char __pyx_k__size[] = "size";  static char __pyx_k__skip[] = "skip"; @@ -2841,6 +3049,7 @@ static char __pyx_k__word[] = "word";  static char __pyx_k___SEP_[] = "_SEP_";  static char __pyx_k__arity[] = "arity";  static char __pyx_k__chain[] = "chain"; +static char __pyx_k__close[] = "close";  static char __pyx_k__debug[] = "debug";  static char __pyx_k__eword[] = "eword";  static char __pyx_k__fword[] = "fword"; @@ -2856,10 +3065,12 @@ static char __pyx_k__reset[] = "reset";  static char __pyx_k__split[] = "split";  static char __pyx_k__start[] = "start";  static char __pyx_k__stats[] = "stats"; +static char __pyx_k__throw[] = "throw";  static char __pyx_k__toMap[] = "toMap";  static char __pyx_k__value[] = "value";  static char __pyx_k__words[] = "words";  static char __pyx_k__write[] = "write"; +static char __pyx_k__append[] = "append";  static char __pyx_k__e_span[] = "e_span";  static char __pyx_k__e_text[] = "e_text";  static char __pyx_k__earray[] = "earray"; @@ -2961,6 +3172,8 @@ static char __pyx_k__reachable[] = "reachable";  static char __pyx_k__read_text[] = "read_text";  static char __pyx_k__use_index[] = "use_index";  static char __pyx_k__IndexError[] = "IndexError"; +static char __pyx_k__ValueError[] = "ValueError"; +static char __pyx_k____import__[] = "__import__";  static char __pyx_k__alignments[] = "alignments";  static char __pyx_k__from_stats[] = "from_stats";  static char __pyx_k__input_span[] = "input_span"; @@ -3005,6 +3218,7 @@ static char __pyx_k__new_min_bound[] = "new_min_bound";  static char __pyx_k__test_sentence[] = "test_sentence";  static char __pyx_k__tight_phrases[] = "tight_phrases";  static char __pyx_k__FeatureContext[] = "FeatureContext"; +static char __pyx_k____pyx_vtable__[] = "__pyx_vtable__";  static char __pyx_k__decode_lattice[] = "decode_lattice";  static char __pyx_k__pattern2phrase[] = "pattern2phrase";  static char __pyx_k__read_text_data[] = "read_text_data"; @@ -3029,14 +3243,13 @@ static char __pyx_k__online_ctx_lookup[] = "online_ctx_lookup";  static char __pyx_k__train_min_gap_size[] = "train_min_gap_size";  static char __pyx_k__pattern2phrase_plus[] = "pattern2phrase_plus";  static PyObject *__pyx_kp_s_1; -static PyObject *__pyx_kp_s_100; -static PyObject *__pyx_kp_s_101; -static PyObject *__pyx_n_s_103; -static PyObject *__pyx_n_s_104; -static PyObject *__pyx_kp_s_106; +static PyObject *__pyx_kp_s_10; +static PyObject *__pyx_kp_s_102; +static PyObject *__pyx_kp_s_103; +static PyObject *__pyx_n_s_105; +static PyObject *__pyx_n_s_106;  static PyObject *__pyx_kp_s_108; -static PyObject *__pyx_kp_s_109; -static PyObject *__pyx_kp_s_110; +static PyObject *__pyx_n_s_110;  static PyObject *__pyx_kp_s_111;  static PyObject *__pyx_kp_s_112;  static PyObject *__pyx_kp_s_113; @@ -3045,72 +3258,78 @@ static PyObject *__pyx_kp_s_115;  static PyObject *__pyx_kp_s_116;  static PyObject *__pyx_kp_s_117;  static PyObject *__pyx_kp_s_118; -static PyObject *__pyx_n_s_119; +static PyObject *__pyx_kp_s_119;  static PyObject *__pyx_kp_s_120;  static PyObject *__pyx_kp_s_121; -static PyObject *__pyx_n_s_123; -static PyObject *__pyx_kp_s_124; +static PyObject *__pyx_n_s_122; +static PyObject *__pyx_kp_s_123; +static PyObject *__pyx_n_s_124;  static PyObject *__pyx_kp_s_125; -static PyObject *__pyx_kp_s_126; -static PyObject *__pyx_kp_s_127; -static PyObject *__pyx_kp_s_128; +static PyObject *__pyx_n_s_127; +static PyObject *__pyx_n_s_128;  static PyObject *__pyx_kp_s_129; -static PyObject *__pyx_kp_s_13;  static PyObject *__pyx_kp_s_130;  static PyObject *__pyx_kp_s_131;  static PyObject *__pyx_kp_s_132;  static PyObject *__pyx_kp_s_133;  static PyObject *__pyx_kp_s_134; +static PyObject *__pyx_kp_s_135; +static PyObject *__pyx_kp_s_136;  static PyObject *__pyx_kp_s_137;  static PyObject *__pyx_kp_s_138;  static PyObject *__pyx_kp_s_139;  static PyObject *__pyx_kp_s_14; -static PyObject *__pyx_kp_s_140; -static PyObject *__pyx_kp_s_142; -static PyObject *__pyx_kp_s_146; -static PyObject *__pyx_n_s_152; -static PyObject *__pyx_kp_s_155; +static PyObject *__pyx_kp_s_143; +static PyObject *__pyx_n_s_144; +static PyObject *__pyx_n_s_146; +static PyObject *__pyx_kp_s_149; +static PyObject *__pyx_kp_s_15; +static PyObject *__pyx_kp_s_150; +static PyObject *__pyx_kp_s_151; +static PyObject *__pyx_kp_s_153;  static PyObject *__pyx_kp_s_157; -static PyObject *__pyx_kp_s_160; -static PyObject *__pyx_kp_s_164; -static PyObject *__pyx_kp_s_18; +static PyObject *__pyx_n_s_163; +static PyObject *__pyx_n_s_166; +static PyObject *__pyx_kp_s_167; +static PyObject *__pyx_kp_s_169; +static PyObject *__pyx_kp_s_172; +static PyObject *__pyx_kp_s_176; +static PyObject *__pyx_kp_s_19;  static PyObject *__pyx_kp_s_2; -static PyObject *__pyx_kp_s_21; -static PyObject *__pyx_kp_s_25; -static PyObject *__pyx_n_s_27; +static PyObject *__pyx_kp_s_23; +static PyObject *__pyx_kp_s_27; +static PyObject *__pyx_n_s_29;  static PyObject *__pyx_kp_s_3; -static PyObject *__pyx_kp_s_31; -static PyObject *__pyx_kp_s_35; +static PyObject *__pyx_kp_s_33; +static PyObject *__pyx_kp_s_37;  static PyObject *__pyx_kp_s_4; -static PyObject *__pyx_kp_s_42; -static PyObject *__pyx_kp_s_45; -static PyObject *__pyx_kp_s_46; +static PyObject *__pyx_kp_s_44; +static PyObject *__pyx_kp_s_47;  static PyObject *__pyx_kp_s_48;  static PyObject *__pyx_kp_s_5;  static PyObject *__pyx_kp_s_50;  static PyObject *__pyx_kp_s_52; -static PyObject *__pyx_kp_s_56; +static PyObject *__pyx_kp_s_54;  static PyObject *__pyx_kp_s_58; -static PyObject *__pyx_kp_s_59;  static PyObject *__pyx_kp_s_6;  static PyObject *__pyx_kp_s_60; +static PyObject *__pyx_kp_s_61;  static PyObject *__pyx_kp_s_62;  static PyObject *__pyx_kp_s_64; -static PyObject *__pyx_kp_s_65;  static PyObject *__pyx_kp_s_66;  static PyObject *__pyx_kp_s_67;  static PyObject *__pyx_kp_s_68;  static PyObject *__pyx_kp_s_69;  static PyObject *__pyx_kp_s_7; -static PyObject *__pyx_n_s_70; -static PyObject *__pyx_n_s_71; -static PyObject *__pyx_kp_s_72; +static PyObject *__pyx_kp_s_70; +static PyObject *__pyx_kp_s_71; +static PyObject *__pyx_n_s_72; +static PyObject *__pyx_n_s_73;  static PyObject *__pyx_kp_s_74;  static PyObject *__pyx_kp_s_76;  static PyObject *__pyx_kp_s_78;  static PyObject *__pyx_kp_s_8; -static PyObject *__pyx_kp_s_83; -static PyObject *__pyx_kp_s_84; +static PyObject *__pyx_kp_s_80;  static PyObject *__pyx_kp_s_85;  static PyObject *__pyx_kp_s_86;  static PyObject *__pyx_kp_s_87; @@ -3120,8 +3339,10 @@ static PyObject *__pyx_kp_s_9;  static PyObject *__pyx_kp_s_90;  static PyObject *__pyx_kp_s_91;  static PyObject *__pyx_kp_s_92; +static PyObject *__pyx_kp_s_93;  static PyObject *__pyx_kp_s_94; -static PyObject *__pyx_kp_s_95; +static PyObject *__pyx_kp_s_96; +static PyObject *__pyx_kp_s_97;  static PyObject *__pyx_kp_s__0;  static PyObject *__pyx_kp_s__1;  static PyObject *__pyx_n_s__Counter; @@ -3140,21 +3361,25 @@ static PyObject *__pyx_n_s__NULL;  static PyObject *__pyx_n_s__RUSAGE_SELF;  static PyObject *__pyx_n_s__StopIteration;  static PyObject *__pyx_n_s__TypeError; +static PyObject *__pyx_n_s__ValueError;  static PyObject *__pyx_n_s____enter__;  static PyObject *__pyx_n_s____exit__; +static PyObject *__pyx_n_s____import__;  static PyObject *__pyx_n_s____main__;  static PyObject *__pyx_n_s____name__; +static PyObject *__pyx_n_s____pyx_vtable__;  static PyObject *__pyx_n_s____test__;  static PyObject *__pyx_n_s___columns;  static PyObject *__pyx_n_s___doquicksort;  static PyObject *__pyx_n_s___sa;  static PyObject *__pyx_n_s__a; -static PyObject *__pyx_n_s__add;  static PyObject *__pyx_n_s__advance;  static PyObject *__pyx_n_s__al;  static PyObject *__pyx_n_s__alignment;  static PyObject *__pyx_n_s__alignments;  static PyObject *__pyx_n_s__alphabet_size; +static PyObject *__pyx_n_s__append; +static PyObject *__pyx_n_s__args;  static PyObject *__pyx_n_s__arity;  static PyObject *__pyx_n_s__arr;  static PyObject *__pyx_n_s__arr_high; @@ -3166,6 +3391,7 @@ static PyObject *__pyx_n_s__by_slack_factor;  static PyObject *__pyx_n_s__category;  static PyObject *__pyx_n_s__chain;  static PyObject *__pyx_n_s__children; +static PyObject *__pyx_n_s__close;  static PyObject *__pyx_n_s__cmp;  static PyObject *__pyx_n_s__col;  static PyObject *__pyx_n_s__collect; @@ -3335,6 +3561,7 @@ static PyObject *__pyx_n_s__sarray;  static PyObject *__pyx_n_s__scorer;  static PyObject *__pyx_n_s__scores;  static PyObject *__pyx_n_s__seek; +static PyObject *__pyx_n_s__send;  static PyObject *__pyx_n_s__set;  static PyObject *__pyx_n_s__shortest;  static PyObject *__pyx_n_s__side; @@ -3354,6 +3581,7 @@ static PyObject *__pyx_n_s__suffix_link;  static PyObject *__pyx_n_s__sym;  static PyObject *__pyx_n_s__syms;  static PyObject *__pyx_n_s__test_sentence; +static PyObject *__pyx_n_s__throw;  static PyObject *__pyx_n_s__tight_phrases;  static PyObject *__pyx_n_s__toMap;  static PyObject *__pyx_n_s__train_min_gap_size; @@ -3379,98 +3607,103 @@ static PyObject *__pyx_n_s__zip;  static PyObject *__pyx_int_0;  static PyObject *__pyx_int_1;  static PyObject *__pyx_int_2; +static PyObject *__pyx_int_3;  static PyObject *__pyx_int_5;  static PyObject *__pyx_int_7;  static PyObject *__pyx_int_neg_1;  static PyObject *__pyx_int_10;  static PyObject *__pyx_int_20;  static PyObject *__pyx_int_1000; -static PyObject *__pyx_int_65536; -static PyObject *__pyx_k_41; -static PyObject *__pyx_k_99; -static PyObject *__pyx_k_tuple_10; +static PyObject *__pyx_k_43; +static PyObject *__pyx_k_101; +static PyObject *__pyx_k_slice_22;  static PyObject *__pyx_k_tuple_11;  static PyObject *__pyx_k_tuple_12; -static PyObject *__pyx_k_tuple_15; +static PyObject *__pyx_k_tuple_13;  static PyObject *__pyx_k_tuple_16;  static PyObject *__pyx_k_tuple_17; -static PyObject *__pyx_k_tuple_19; +static PyObject *__pyx_k_tuple_18;  static PyObject *__pyx_k_tuple_20; -static PyObject *__pyx_k_tuple_22; -static PyObject *__pyx_k_tuple_23; +static PyObject *__pyx_k_tuple_21;  static PyObject *__pyx_k_tuple_24; +static PyObject *__pyx_k_tuple_25;  static PyObject *__pyx_k_tuple_26;  static PyObject *__pyx_k_tuple_28; -static PyObject *__pyx_k_tuple_29;  static PyObject *__pyx_k_tuple_30; +static PyObject *__pyx_k_tuple_31;  static PyObject *__pyx_k_tuple_32; -static PyObject *__pyx_k_tuple_33;  static PyObject *__pyx_k_tuple_34; +static PyObject *__pyx_k_tuple_35;  static PyObject *__pyx_k_tuple_36; -static PyObject *__pyx_k_tuple_37;  static PyObject *__pyx_k_tuple_38;  static PyObject *__pyx_k_tuple_39;  static PyObject *__pyx_k_tuple_40; -static PyObject *__pyx_k_tuple_43; -static PyObject *__pyx_k_tuple_44; -static PyObject *__pyx_k_tuple_47; +static PyObject *__pyx_k_tuple_41; +static PyObject *__pyx_k_tuple_42; +static PyObject *__pyx_k_tuple_45; +static PyObject *__pyx_k_tuple_46;  static PyObject *__pyx_k_tuple_49;  static PyObject *__pyx_k_tuple_51;  static PyObject *__pyx_k_tuple_53; -static PyObject *__pyx_k_tuple_54;  static PyObject *__pyx_k_tuple_55; +static PyObject *__pyx_k_tuple_56;  static PyObject *__pyx_k_tuple_57; -static PyObject *__pyx_k_tuple_61; +static PyObject *__pyx_k_tuple_59;  static PyObject *__pyx_k_tuple_63; -static PyObject *__pyx_k_tuple_73; +static PyObject *__pyx_k_tuple_65;  static PyObject *__pyx_k_tuple_75;  static PyObject *__pyx_k_tuple_77;  static PyObject *__pyx_k_tuple_79; -static PyObject *__pyx_k_tuple_80;  static PyObject *__pyx_k_tuple_81;  static PyObject *__pyx_k_tuple_82; -static PyObject *__pyx_k_tuple_93; -static PyObject *__pyx_k_tuple_96; -static PyObject *__pyx_k_tuple_97; +static PyObject *__pyx_k_tuple_83; +static PyObject *__pyx_k_tuple_84; +static PyObject *__pyx_k_tuple_95;  static PyObject *__pyx_k_tuple_98; -static PyObject *__pyx_k_tuple_102; -static PyObject *__pyx_k_tuple_107; -static PyObject *__pyx_k_tuple_122; -static PyObject *__pyx_k_tuple_135; +static PyObject *__pyx_k_tuple_99; +static PyObject *__pyx_k_slice_140; +static PyObject *__pyx_k_slice_145; +static PyObject *__pyx_k_slice_147; +static PyObject *__pyx_k_slice_148; +static PyObject *__pyx_k_tuple_100; +static PyObject *__pyx_k_tuple_104; +static PyObject *__pyx_k_tuple_109; +static PyObject *__pyx_k_tuple_126;  static PyObject *__pyx_k_tuple_141; -static PyObject *__pyx_k_tuple_143; -static PyObject *__pyx_k_tuple_144; -static PyObject *__pyx_k_tuple_145; -static PyObject *__pyx_k_tuple_147; -static PyObject *__pyx_k_tuple_148; -static PyObject *__pyx_k_tuple_149; -static PyObject *__pyx_k_tuple_150; -static PyObject *__pyx_k_tuple_151; -static PyObject *__pyx_k_tuple_153; +static PyObject *__pyx_k_tuple_152; +static PyObject *__pyx_k_tuple_154; +static PyObject *__pyx_k_tuple_155; +static PyObject *__pyx_k_tuple_156;  static PyObject *__pyx_k_tuple_158; +static PyObject *__pyx_k_tuple_159; +static PyObject *__pyx_k_tuple_160;  static PyObject *__pyx_k_tuple_161;  static PyObject *__pyx_k_tuple_162; -static PyObject *__pyx_k_tuple_165; -static PyObject *__pyx_k_tuple_167; -static PyObject *__pyx_k_tuple_169; -static PyObject *__pyx_k_tuple_171; +static PyObject *__pyx_k_tuple_164; +static PyObject *__pyx_k_tuple_170;  static PyObject *__pyx_k_tuple_173; -static PyObject *__pyx_k_tuple_176; -static PyObject *__pyx_k_tuple_178; -static PyObject *__pyx_k_tuple_180; -static PyObject *__pyx_k_codeobj_136; -static PyObject *__pyx_k_codeobj_154; -static PyObject *__pyx_k_codeobj_156; -static PyObject *__pyx_k_codeobj_159; -static PyObject *__pyx_k_codeobj_163; -static PyObject *__pyx_k_codeobj_166; +static PyObject *__pyx_k_tuple_174; +static PyObject *__pyx_k_tuple_177; +static PyObject *__pyx_k_tuple_179; +static PyObject *__pyx_k_tuple_181; +static PyObject *__pyx_k_tuple_183; +static PyObject *__pyx_k_tuple_185; +static PyObject *__pyx_k_tuple_188; +static PyObject *__pyx_k_tuple_190; +static PyObject *__pyx_k_tuple_192; +static PyObject *__pyx_k_codeobj_142; +static PyObject *__pyx_k_codeobj_165;  static PyObject *__pyx_k_codeobj_168; -static PyObject *__pyx_k_codeobj_170; -static PyObject *__pyx_k_codeobj_172; -static PyObject *__pyx_k_codeobj_174; -static PyObject *__pyx_k_codeobj_177; -static PyObject *__pyx_k_codeobj_179; -static PyObject *__pyx_k_codeobj_181; +static PyObject *__pyx_k_codeobj_171; +static PyObject *__pyx_k_codeobj_175; +static PyObject *__pyx_k_codeobj_178; +static PyObject *__pyx_k_codeobj_180; +static PyObject *__pyx_k_codeobj_182; +static PyObject *__pyx_k_codeobj_184; +static PyObject *__pyx_k_codeobj_186; +static PyObject *__pyx_k_codeobj_189; +static PyObject *__pyx_k_codeobj_191; +static PyObject *__pyx_k_codeobj_193;  /* Python wrapper */  static PyObject *__pyx_pw_3_sa_1monitor_cpu(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ @@ -3479,7 +3712,6 @@ static PyObject *__pyx_pw_3_sa_1monitor_cpu(PyObject *__pyx_self, CYTHON_UNUSED    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("monitor_cpu (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_monitor_cpu(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r; @@ -3513,14 +3745,14 @@ static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self) {   *    */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __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 = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -3532,7 +3764,7 @@ static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self) {    __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_GetAttr(__pyx_t_3, __pyx_n_s__ru_utime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__ru_utime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -3543,14 +3775,14 @@ static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self) {   *    * def gzip_or_text(char* filename):   */ -  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__getrusage); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __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_GetName(__pyx_m, __pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__resource); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__RUSAGE_SELF); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __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 = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -3562,7 +3794,7 @@ static PyObject *__pyx_pf_3_sa_monitor_cpu(CYTHON_UNUSED PyObject *__pyx_self) {    __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__ru_stime); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__ru_stime); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __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_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -3593,12 +3825,14 @@ static PyObject *__pyx_pw_3_sa_3gzip_or_text(PyObject *__pyx_self, PyObject *__p  static PyMethodDef __pyx_mdef_3_sa_3gzip_or_text = {__Pyx_NAMESTR("gzip_or_text"), (PyCFunction)__pyx_pw_3_sa_3gzip_or_text, METH_O, __Pyx_DOCSTR(0)};  static PyObject *__pyx_pw_3_sa_3gzip_or_text(PyObject *__pyx_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("gzip_or_text (wrapper)", 0); -  __pyx_self = __pyx_self;    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -3638,11 +3872,11 @@ static PyObject *__pyx_pf_3_sa_2gzip_or_text(CYTHON_UNUSED PyObject *__pyx_self,   *         return gzip.GzipFile(filename)   *     else:   */ -  __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1));    __pyx_t_2 = __Pyx_PyBytes_Tailmatch(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_kp_s_1), 0, PY_SSIZE_T_MAX, 1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  if (__pyx_t_2) { +  if ((__pyx_t_2 != 0)) {      /* "_sa.pyx":11   * def gzip_or_text(char* filename): @@ -3652,12 +3886,12 @@ static PyObject *__pyx_pf_3_sa_2gzip_or_text(CYTHON_UNUSED PyObject *__pyx_self,   *         return open(filename)   */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__gzip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -3683,7 +3917,7 @@ static PyObject *__pyx_pf_3_sa_2gzip_or_text(CYTHON_UNUSED PyObject *__pyx_self,   * logger = logging.getLogger('cdec.sa')   */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -3719,11 +3953,14 @@ static int __pyx_pw_3_sa_9FloatList_1__cinit__(PyObject *__pyx_v_self, PyObject    int __pyx_v_size;    int __pyx_v_increment;    int __pyx_v_initial_len; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -3756,18 +3993,6 @@ static int __pyx_pw_3_sa_9FloatList_1__cinit__(PyObject *__pyx_v_self, PyObject        if (unlikely(kw_args > 0)) {          if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        } -      if (values[0]) { -      } else { -        __pyx_v_size = ((int)0); -      } -      if (values[1]) { -      } else { -        __pyx_v_increment = ((int)1); -      } -      if (values[2]) { -      } else { -        __pyx_v_initial_len = ((int)0); -      }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) {          case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); @@ -3806,7 +4031,7 @@ static int __pyx_pw_3_sa_9FloatList_1__cinit__(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":11 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":11   * cdef class FloatList:   *    *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):             # <<<<<<<<<<<<<< @@ -3820,17 +4045,17 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_    int __pyx_t_1;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":12 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":12   *    *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):   *         if initial_len > size:             # <<<<<<<<<<<<<<   *             size = initial_len   *         self.size = size   */ -  __pyx_t_1 = (__pyx_v_initial_len > __pyx_v_size); +  __pyx_t_1 = ((__pyx_v_initial_len > __pyx_v_size) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":13 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":13   *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):   *         if initial_len > size:   *             size = initial_len             # <<<<<<<<<<<<<< @@ -3842,7 +4067,7 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":14   *         if initial_len > size:   *             size = initial_len   *         self.size = size             # <<<<<<<<<<<<<< @@ -3851,7 +4076,7 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_   */    __pyx_v_self->size = __pyx_v_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":15   *             size = initial_len   *         self.size = size   *         self.increment = increment             # <<<<<<<<<<<<<< @@ -3860,7 +4085,7 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_   */    __pyx_v_self->increment = __pyx_v_increment; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":16 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":16   *         self.size = size   *         self.increment = increment   *         self.len = initial_len             # <<<<<<<<<<<<<< @@ -3869,7 +4094,7 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_   */    __pyx_v_self->len = __pyx_v_initial_len; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":17   *         self.increment = increment   *         self.len = initial_len   *         self.arr = <float*> malloc(size*sizeof(float))             # <<<<<<<<<<<<<< @@ -3878,7 +4103,7 @@ static int __pyx_pf_3_sa_9FloatList___cinit__(struct __pyx_obj_3_sa_FloatList *_   */    __pyx_v_self->arr = ((float *)malloc((__pyx_v_size * (sizeof(float))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":18   *         self.len = initial_len   *         self.arr = <float*> malloc(size*sizeof(float))   *         memset(self.arr, 0, initial_len*sizeof(float))             # <<<<<<<<<<<<<< @@ -3901,7 +4126,7 @@ static void __pyx_pw_3_sa_9FloatList_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":20 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":20   *         memset(self.arr, 0, initial_len*sizeof(float))   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -3913,7 +4138,7 @@ static void __pyx_pf_3_sa_9FloatList_2__dealloc__(struct __pyx_obj_3_sa_FloatLis    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":21   *    *     def __dealloc__(self):   *         free(self.arr)             # <<<<<<<<<<<<<< @@ -3936,7 +4161,7 @@ static PyObject *__pyx_pw_3_sa_9FloatList_5__getitem__(PyObject *__pyx_v_self, P    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":23 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":23   *         free(self.arr)   *    *     def __getitem__(self, i):             # <<<<<<<<<<<<<< @@ -3959,7 +4184,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__getitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":24 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":24   *    *     def __getitem__(self, i):   *         j = i             # <<<<<<<<<<<<<< @@ -3969,20 +4194,19 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    __Pyx_INCREF(__pyx_v_i);    __pyx_v_j = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":25 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":25   *     def __getitem__(self, i):   *         j = i   *         if i<0:             # <<<<<<<<<<<<<<   *             j = self.len + i   *         if j<0 or j>=self.len:   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":26 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":26   *         j = i   *         if i<0:   *             j = self.len + i             # <<<<<<<<<<<<<< @@ -4001,22 +4225,20 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":27 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":27   *         if i<0:   *             j = self.len + i   *         if j<0 or j>=self.len:             # <<<<<<<<<<<<<<   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))   *         return self.arr[j]   */ -  __pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_3 = PyObject_RichCompare(__pyx_v_j, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    if (!__pyx_t_2) {      __pyx_t_3 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_t_3, Py_GE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -4026,7 +4248,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    }    if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":28 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":28   *             j = self.len + i   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))             # <<<<<<<<<<<<<< @@ -4061,7 +4283,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":29 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":29   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))   *         return self.arr[j]             # <<<<<<<<<<<<<< @@ -4090,7 +4312,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_4__getitem__(struct __pyx_obj_3_sa_Flo    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":31 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":31   *         return self.arr[j]   *    *     cdef void set(self, int i, float v):             # <<<<<<<<<<<<<< @@ -4112,7 +4334,7 @@ static void __pyx_f_3_sa_9FloatList_set(struct __pyx_obj_3_sa_FloatList *__pyx_v    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("set", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":32 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":32   *    *     cdef void set(self, int i, float v):   *         j = i             # <<<<<<<<<<<<<< @@ -4121,17 +4343,17 @@ static void __pyx_f_3_sa_9FloatList_set(struct __pyx_obj_3_sa_FloatList *__pyx_v   */    __pyx_v_j = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":33   *     cdef void set(self, int i, float v):   *         j = i   *         if i<0:             # <<<<<<<<<<<<<<   *             j = self.len + i   *         if j<0 or j>=self.len:   */ -  __pyx_t_1 = (__pyx_v_i < 0); +  __pyx_t_1 = ((__pyx_v_i < 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":34 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":34   *         j = i   *         if i<0:   *             j = self.len + i             # <<<<<<<<<<<<<< @@ -4143,23 +4365,23 @@ static void __pyx_f_3_sa_9FloatList_set(struct __pyx_obj_3_sa_FloatList *__pyx_v    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":35 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":35   *         if i<0:   *             j = self.len + i   *         if j<0 or j>=self.len:             # <<<<<<<<<<<<<<   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))   *         self.arr[j] = v   */ -  __pyx_t_1 = (__pyx_v_j < 0); +  __pyx_t_1 = ((__pyx_v_j < 0) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_j >= __pyx_v_self->len); +    __pyx_t_2 = ((__pyx_v_j >= __pyx_v_self->len) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":36 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":36   *             j = self.len + i   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))             # <<<<<<<<<<<<<< @@ -4196,7 +4418,7 @@ static void __pyx_f_3_sa_9FloatList_set(struct __pyx_obj_3_sa_FloatList *__pyx_v    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":37 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":37   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length FloatList" % (i, self.len))   *         self.arr[j] = v             # <<<<<<<<<<<<<< @@ -4226,7 +4448,7 @@ static int __pyx_pw_3_sa_9FloatList_7__setitem__(PyObject *__pyx_v_self, PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":39 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":39   *         self.arr[j] = v   *    *     def __setitem__(self, i, val):             # <<<<<<<<<<<<<< @@ -4244,7 +4466,7 @@ static int __pyx_pf_3_sa_9FloatList_6__setitem__(struct __pyx_obj_3_sa_FloatList    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__setitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":40   *    *     def __setitem__(self, i, val):   *         self.set(i, val)             # <<<<<<<<<<<<<< @@ -4276,7 +4498,7 @@ static Py_ssize_t __pyx_pw_3_sa_9FloatList_9__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":42 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":42   *         self.set(i, val)   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -4289,7 +4511,7 @@ static Py_ssize_t __pyx_pf_3_sa_9FloatList_8__len__(struct __pyx_obj_3_sa_FloatL    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":43   *    *     def __len__(self):   *         return self.len             # <<<<<<<<<<<<<< @@ -4309,6 +4531,9 @@ static Py_ssize_t __pyx_pf_3_sa_9FloatList_8__len__(struct __pyx_obj_3_sa_FloatL  static PyObject *__pyx_pw_3_sa_9FloatList_11append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/  static PyObject *__pyx_pw_3_sa_9FloatList_11append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {    float __pyx_v_val; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("append (wrapper)", 0); @@ -4326,7 +4551,7 @@ static PyObject *__pyx_pw_3_sa_9FloatList_11append(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":45 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":45   *         return self.len   *    *     def append(self, float val):             # <<<<<<<<<<<<<< @@ -4340,17 +4565,17 @@ static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatLi    int __pyx_t_1;    __Pyx_RefNannySetupContext("append", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":46 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":46   *    *     def append(self, float val):   *         if self.len == self.size:             # <<<<<<<<<<<<<<   *             self.size = self.size + self.increment   *             self.arr = <float*> realloc(self.arr, self.size*sizeof(float))   */ -  __pyx_t_1 = (__pyx_v_self->len == __pyx_v_self->size); +  __pyx_t_1 = ((__pyx_v_self->len == __pyx_v_self->size) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":47 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":47   *     def append(self, float val):   *         if self.len == self.size:   *             self.size = self.size + self.increment             # <<<<<<<<<<<<<< @@ -4359,7 +4584,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatLi   */      __pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->increment); -    /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":48 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":48   *         if self.len == self.size:   *             self.size = self.size + self.increment   *             self.arr = <float*> realloc(self.arr, self.size*sizeof(float))             # <<<<<<<<<<<<<< @@ -4371,7 +4596,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatLi    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":49 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":49   *             self.size = self.size + self.increment   *             self.arr = <float*> realloc(self.arr, self.size*sizeof(float))   *         self.arr[self.len] = val             # <<<<<<<<<<<<<< @@ -4380,7 +4605,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatLi   */    (__pyx_v_self->arr[__pyx_v_self->len]) = __pyx_v_val; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":50 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":50   *             self.arr = <float*> realloc(self.arr, self.size*sizeof(float))   *         self.arr[self.len] = val   *         self.len = self.len + 1             # <<<<<<<<<<<<<< @@ -4395,7 +4620,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_10append(struct __pyx_obj_3_sa_FloatLi    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":52 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":52   *         self.len = self.len + 1   *    *     cdef void write_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -4407,7 +4632,7 @@ static void __pyx_f_3_sa_9FloatList_write_handle(struct __pyx_obj_3_sa_FloatList    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":53 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":53   *    *     cdef void write_handle(self, FILE* f):   *         fwrite(&(self.len), sizeof(float), 1, f)             # <<<<<<<<<<<<<< @@ -4416,7 +4641,7 @@ static void __pyx_f_3_sa_9FloatList_write_handle(struct __pyx_obj_3_sa_FloatList   */    fwrite((&__pyx_v_self->len), (sizeof(float)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":54   *     cdef void write_handle(self, FILE* f):   *         fwrite(&(self.len), sizeof(float), 1, f)   *         fwrite(self.arr, sizeof(float), self.len, f)             # <<<<<<<<<<<<<< @@ -4432,11 +4657,14 @@ static void __pyx_f_3_sa_9FloatList_write_handle(struct __pyx_obj_3_sa_FloatList  static PyObject *__pyx_pw_3_sa_9FloatList_13write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9FloatList_13write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -4449,7 +4677,7 @@ static PyObject *__pyx_pw_3_sa_9FloatList_13write(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":56 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":56   *         fwrite(self.arr, sizeof(float), self.len, f)   *    *     def write(self, char* filename):             # <<<<<<<<<<<<<< @@ -4463,7 +4691,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":58 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":58   *     def write(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -4472,7 +4700,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":59   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.write_handle(f)             # <<<<<<<<<<<<<< @@ -4481,7 +4709,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":60 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":60   *         f = fopen(filename, "w")   *         self.write_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -4496,7 +4724,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":62 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":62   *         fclose(f)   *    *     cdef void read_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -4506,9 +4734,10 @@ static PyObject *__pyx_pf_3_sa_9FloatList_12write(struct __pyx_obj_3_sa_FloatLis  static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList *__pyx_v_self, FILE *__pyx_v_f) {    __Pyx_RefNannyDeclarations +  int __pyx_t_1;    __Pyx_RefNannySetupContext("read_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":63 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":63   *    *     cdef void read_handle(self, FILE* f):   *         free(self.arr)             # <<<<<<<<<<<<<< @@ -4517,7 +4746,7 @@ static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList   */    free(__pyx_v_self->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":64 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":64   *     cdef void read_handle(self, FILE* f):   *         free(self.arr)   *         fread(&(self.len), sizeof(float), 1, f)             # <<<<<<<<<<<<<< @@ -4526,7 +4755,7 @@ static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList   */    fread((&__pyx_v_self->len), (sizeof(float)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":65 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":65   *         free(self.arr)   *         fread(&(self.len), sizeof(float), 1, f)   *         self.arr = <float*> malloc(self.len * sizeof(float))             # <<<<<<<<<<<<<< @@ -4535,16 +4764,17 @@ static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList   */    __pyx_v_self->arr = ((float *)malloc((__pyx_v_self->len * (sizeof(float))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":66   *         fread(&(self.len), sizeof(float), 1, f)   *         self.arr = <float*> malloc(self.len * sizeof(float))   *         self.size = self.len             # <<<<<<<<<<<<<<   *         fread(self.arr, sizeof(float), self.len, f)   *    */ -  __pyx_v_self->size = __pyx_v_self->len; +  __pyx_t_1 = __pyx_v_self->len; +  __pyx_v_self->size = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":67 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":67   *         self.arr = <float*> malloc(self.len * sizeof(float))   *         self.size = self.len   *         fread(self.arr, sizeof(float), self.len, f)             # <<<<<<<<<<<<<< @@ -4560,11 +4790,14 @@ static void __pyx_f_3_sa_9FloatList_read_handle(struct __pyx_obj_3_sa_FloatList  static PyObject *__pyx_pw_3_sa_9FloatList_15read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9FloatList_15read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -4577,7 +4810,7 @@ static PyObject *__pyx_pw_3_sa_9FloatList_15read(PyObject *__pyx_v_self, PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":69 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":69   *         fread(self.arr, sizeof(float), self.len, f)   *    *     def read(self, char* filename):             # <<<<<<<<<<<<<< @@ -4591,7 +4824,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":71   *     def read(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -4600,7 +4833,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":72 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":72   *         cdef FILE* f   *         f = fopen(filename, "r")   *         self.read_handle(f)             # <<<<<<<<<<<<<< @@ -4608,7 +4841,7 @@ static PyObject *__pyx_pf_3_sa_9FloatList_14read(struct __pyx_obj_3_sa_FloatList   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/float_list.pxi":73 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/float_list.pxi":73   *         f = fopen(filename, "r")   *         self.read_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -4627,11 +4860,14 @@ static int __pyx_pw_3_sa_7IntList_1__cinit__(PyObject *__pyx_v_self, PyObject *_    int __pyx_v_size;    int __pyx_v_increment;    int __pyx_v_initial_len; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,&__pyx_n_s__increment,&__pyx_n_s__initial_len,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -4664,18 +4900,6 @@ static int __pyx_pw_3_sa_7IntList_1__cinit__(PyObject *__pyx_v_self, PyObject *_        if (unlikely(kw_args > 0)) {          if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        } -      if (values[0]) { -      } else { -        __pyx_v_size = ((int)0); -      } -      if (values[1]) { -      } else { -        __pyx_v_increment = ((int)1); -      } -      if (values[2]) { -      } else { -        __pyx_v_initial_len = ((int)0); -      }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) {          case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); @@ -4714,7 +4938,7 @@ static int __pyx_pw_3_sa_7IntList_1__cinit__(PyObject *__pyx_v_self, PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":11 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":11   * cdef class IntList:   *    *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):             # <<<<<<<<<<<<<< @@ -4728,17 +4952,17 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx    int __pyx_t_1;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":12 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":12   *    *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):   *         if initial_len > size:             # <<<<<<<<<<<<<<   *             size = initial_len   *         self.size = size   */ -  __pyx_t_1 = (__pyx_v_initial_len > __pyx_v_size); +  __pyx_t_1 = ((__pyx_v_initial_len > __pyx_v_size) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":13 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":13   *     def __cinit__(self, int size=0, int increment=1, int initial_len=0):   *         if initial_len > size:   *             size = initial_len             # <<<<<<<<<<<<<< @@ -4750,7 +4974,7 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":14   *         if initial_len > size:   *             size = initial_len   *         self.size = size             # <<<<<<<<<<<<<< @@ -4759,7 +4983,7 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx   */    __pyx_v_self->size = __pyx_v_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":15   *             size = initial_len   *         self.size = size   *         self.increment = increment             # <<<<<<<<<<<<<< @@ -4768,7 +4992,7 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx   */    __pyx_v_self->increment = __pyx_v_increment; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":16 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":16   *         self.size = size   *         self.increment = increment   *         self.len = initial_len             # <<<<<<<<<<<<<< @@ -4777,7 +5001,7 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx   */    __pyx_v_self->len = __pyx_v_initial_len; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":17   *         self.increment = increment   *         self.len = initial_len   *         self.arr = <int*> malloc(size*sizeof(int))             # <<<<<<<<<<<<<< @@ -4786,7 +5010,7 @@ static int __pyx_pf_3_sa_7IntList___cinit__(struct __pyx_obj_3_sa_IntList *__pyx   */    __pyx_v_self->arr = ((int *)malloc((__pyx_v_size * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":18   *         self.len = initial_len   *         self.arr = <int*> malloc(size*sizeof(int))   *         memset(self.arr, 0, initial_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -4811,7 +5035,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_3__str__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":20 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":20   *         memset(self.arr, 0, initial_len*sizeof(int))   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -4834,7 +5058,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__str__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":22   *     def __str__(self):   *         cdef unsigned i   *         ret = "IntList["             # <<<<<<<<<<<<<< @@ -4844,7 +5068,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    __Pyx_INCREF(((PyObject *)__pyx_kp_s_3));    __pyx_v_ret = ((PyObject *)__pyx_kp_s_3); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":23   *         cdef unsigned i   *         ret = "IntList["   *         for idx in range(self.size):             # <<<<<<<<<<<<<< @@ -4855,17 +5079,17 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_v_idx = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":24 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":24   *         ret = "IntList["   *         for idx in range(self.size):   *             if idx>0:             # <<<<<<<<<<<<<<   *                 ret += ","   *             ret += str(self.arr[idx])   */ -    __pyx_t_3 = (__pyx_v_idx > 0); +    __pyx_t_3 = ((__pyx_v_idx > 0) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":25 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":25   *         for idx in range(self.size):   *             if idx>0:   *                 ret += ","             # <<<<<<<<<<<<<< @@ -4881,7 +5105,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":26 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":26   *             if idx>0:   *                 ret += ","   *             ret += str(self.arr[idx])             # <<<<<<<<<<<<<< @@ -4906,7 +5130,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *      __pyx_t_5 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":27 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":27   *                 ret += ","   *             ret += str(self.arr[idx])   *         ret += "]"             # <<<<<<<<<<<<<< @@ -4919,7 +5143,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    __pyx_v_ret = __pyx_t_5;    __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":28 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":28   *             ret += str(self.arr[idx])   *         ret += "]"   *         ret += "len="             # <<<<<<<<<<<<<< @@ -4932,7 +5156,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    __pyx_v_ret = __pyx_t_5;    __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":29 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":29   *         ret += "]"   *         ret += "len="   *         ret += str(self.len)             # <<<<<<<<<<<<<< @@ -4956,12 +5180,12 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *    __pyx_v_ret = __pyx_t_4;    __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":30   *         ret += "len="   *         ret += str(self.len)   *         return ret             # <<<<<<<<<<<<<<   *  - *     def index(self, val): + *     def index(self, int val):   */    __Pyx_XDECREF(__pyx_r);    __Pyx_INCREF(__pyx_v_ret); @@ -4983,40 +5207,53 @@ static PyObject *__pyx_pf_3_sa_7IntList_2__str__(struct __pyx_obj_3_sa_IntList *  }  /* Python wrapper */ -static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ -static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { +static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/ +static PyObject *__pyx_pw_3_sa_7IntList_5index(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) { +  int __pyx_v_val; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("index (wrapper)", 0); -  __pyx_r = __pyx_pf_3_sa_7IntList_4index(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((PyObject *)__pyx_v_val)); +  assert(__pyx_arg_val); { +    __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  } +  goto __pyx_L4_argument_unpacking_done; +  __pyx_L3_error:; +  __Pyx_AddTraceback("_sa.IntList.index", __pyx_clineno, __pyx_lineno, __pyx_filename); +  __Pyx_RefNannyFinishContext(); +  return NULL; +  __pyx_L4_argument_unpacking_done:; +  __pyx_r = __pyx_pf_3_sa_7IntList_4index(((struct __pyx_obj_3_sa_IntList *)__pyx_v_self), ((int)__pyx_v_val));    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":32 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":32   *         return ret   *  - *     def index(self, val):             # <<<<<<<<<<<<<< + *     def index(self, int val):             # <<<<<<<<<<<<<<   *         cdef unsigned i   *         for i in range(self.len):   */ -static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_val) { +static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__pyx_v_self, int __pyx_v_val) {    unsigned int __pyx_v_i;    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1;    unsigned int __pyx_t_2; -  PyObject *__pyx_t_3 = NULL; +  int __pyx_t_3;    PyObject *__pyx_t_4 = NULL; -  int __pyx_t_5; +  PyObject *__pyx_t_5 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("index", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":34 - *     def index(self, val): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":34 + *     def index(self, int val):   *         cdef unsigned i   *         for i in range(self.len):             # <<<<<<<<<<<<<<   *             if self.arr[i] == val: @@ -5026,27 +5263,21 @@ static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_v_i = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":35 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":35   *         cdef unsigned i   *         for i in range(self.len):   *             if self.arr[i] == val:             # <<<<<<<<<<<<<<   *                 return i - *         return IndexError + *         raise ValueError('%s not in IntList' % val)   */ -    __pyx_t_3 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_val, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __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[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    if (__pyx_t_5) { +    __pyx_t_3 = (((__pyx_v_self->arr[__pyx_v_i]) == __pyx_v_val) != 0); +    if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":36 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":36   *         for i in range(self.len):   *             if self.arr[i] == val:   *                 return i             # <<<<<<<<<<<<<< - *         return IndexError + *         raise ValueError('%s not in IntList' % val)   *    */        __Pyx_XDECREF(__pyx_r); @@ -5060,23 +5291,35 @@ static PyObject *__pyx_pf_3_sa_7IntList_4index(struct __pyx_obj_3_sa_IntList *__      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":37 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":37   *             if self.arr[i] == val:   *                 return i - *         return IndexError             # <<<<<<<<<<<<<< + *         raise ValueError('%s not in IntList' % val)             # <<<<<<<<<<<<<<   *    *     def partition(self,start,end):   */ -  __Pyx_XDECREF(__pyx_r); -  __Pyx_INCREF(__pyx_builtin_IndexError); -  __pyx_r = __pyx_builtin_IndexError; -  goto __pyx_L0; +  __pyx_t_4 = PyInt_FromLong(__pyx_v_val); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_4); +  __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(((PyObject *)__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[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_4); +  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5)); +  __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); +  __pyx_t_5 = 0; +  __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __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_t_5, 0, 0, 0); +  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +  {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __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_XDECREF(__pyx_t_5);    __Pyx_AddTraceback("_sa.IntList.index", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -5090,11 +5333,14 @@ static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObj  static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_start = 0;    PyObject *__pyx_v_end = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("partition (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -5108,12 +5354,10 @@ static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObj        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("partition", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -5143,8 +5387,8 @@ static PyObject *__pyx_pw_3_sa_7IntList_7partition(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":39 - *         return IndexError +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":39 + *         raise ValueError('%s not in IntList' % val)   *    *     def partition(self,start,end):             # <<<<<<<<<<<<<<   *         pivot = self.arr[end] @@ -5169,7 +5413,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("partition", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":40   *    *     def partition(self,start,end):   *         pivot = self.arr[end]             # <<<<<<<<<<<<<< @@ -5182,7 +5426,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList    __pyx_v_pivot = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":41   *     def partition(self,start,end):   *         pivot = self.arr[end]   *         bottom = start-1             # <<<<<<<<<<<<<< @@ -5194,7 +5438,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList    __pyx_v_bottom = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":42 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":42   *         pivot = self.arr[end]   *         bottom = start-1   *         top = end             # <<<<<<<<<<<<<< @@ -5204,7 +5448,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList    __Pyx_INCREF(__pyx_v_end);    __pyx_v_top = __pyx_v_end; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":43   *         bottom = start-1   *         top = end   *         done = 0             # <<<<<<<<<<<<<< @@ -5213,7 +5457,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   */    __pyx_v_done = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":44 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":44   *         top = end   *         done = 0   *         while not done:             # <<<<<<<<<<<<<< @@ -5221,10 +5465,10 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   *                 bottom += 1   */    while (1) { -    __pyx_t_3 = (!__pyx_v_done); +    __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":45 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":45   *         done = 0   *         while not done:   *             while not done:             # <<<<<<<<<<<<<< @@ -5232,10 +5476,10 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   *                 if bottom == top:   */      while (1) { -      __pyx_t_3 = (!__pyx_v_done); +      __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":46 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":46   *         while not done:   *             while not done:   *                 bottom += 1             # <<<<<<<<<<<<<< @@ -5248,20 +5492,19 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        __pyx_v_bottom = __pyx_t_2;        __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":47 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":47   *             while not done:   *                 bottom += 1   *                 if bottom == top:             # <<<<<<<<<<<<<<   *                     done = 1   *                     break   */ -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_bottom, __pyx_v_top, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_2 = PyObject_RichCompare(__pyx_v_bottom, __pyx_v_top, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":48 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":48   *                 bottom += 1   *                 if bottom == top:   *                     done = 1             # <<<<<<<<<<<<<< @@ -5270,7 +5513,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   */          __pyx_v_done = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":49 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":49   *                 if bottom == top:   *                     done = 1   *                     break             # <<<<<<<<<<<<<< @@ -5282,7 +5525,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        }        __pyx_L7:; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":50 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":50   *                     done = 1   *                     break   *                 if self.arr[bottom] > pivot:             # <<<<<<<<<<<<<< @@ -5292,14 +5535,13 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_bottom); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_2 = PyInt_FromLong((__pyx_v_self->arr[__pyx_t_1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_v_pivot, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_v_pivot, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":51 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":51   *                     break   *                 if self.arr[bottom] > pivot:   *                     self.arr[top] = self.arr[bottom]             # <<<<<<<<<<<<<< @@ -5310,7 +5552,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList          __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          (__pyx_v_self->arr[__pyx_t_5]) = (__pyx_v_self->arr[__pyx_t_1]); -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":52 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":52   *                 if self.arr[bottom] > pivot:   *                     self.arr[top] = self.arr[bottom]   *                     break             # <<<<<<<<<<<<<< @@ -5324,7 +5566,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList      }      __pyx_L6_break:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":53 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":53   *                     self.arr[top] = self.arr[bottom]   *                     break   *             while not done:             # <<<<<<<<<<<<<< @@ -5332,10 +5574,10 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   *                 if top == bottom:   */      while (1) { -      __pyx_t_3 = (!__pyx_v_done); +      __pyx_t_3 = ((!(__pyx_v_done != 0)) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":54 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":54   *                     break   *             while not done:   *                 top -= 1             # <<<<<<<<<<<<<< @@ -5348,20 +5590,19 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        __pyx_v_top = __pyx_t_4;        __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":55 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":55   *             while not done:   *                 top -= 1   *                 if top == bottom:             # <<<<<<<<<<<<<<   *                     done = 1   *                     break   */ -      __pyx_t_4 = PyObject_RichCompare(__pyx_v_top, __pyx_v_bottom, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_4 = PyObject_RichCompare(__pyx_v_top, __pyx_v_bottom, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":56 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":56   *                 top -= 1   *                 if top == bottom:   *                     done = 1             # <<<<<<<<<<<<<< @@ -5370,7 +5611,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList   */          __pyx_v_done = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":57 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":57   *                 if top == bottom:   *                     done = 1   *                     break             # <<<<<<<<<<<<<< @@ -5382,7 +5623,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        }        __pyx_L11:; -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":58 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":58   *                     done = 1   *                     break   *                 if self.arr[top] < pivot:             # <<<<<<<<<<<<<< @@ -5392,14 +5633,13 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList        __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_4 = PyInt_FromLong((__pyx_v_self->arr[__pyx_t_1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_pivot, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_pivot, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":59 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":59   *                     break   *                 if self.arr[top] < pivot:   *                     self.arr[bottom] = self.arr[top]             # <<<<<<<<<<<<<< @@ -5410,7 +5650,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList          __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_bottom); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          (__pyx_v_self->arr[__pyx_t_5]) = (__pyx_v_self->arr[__pyx_t_1]); -        /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":60 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":60   *                 if self.arr[top] < pivot:   *                     self.arr[bottom] = self.arr[top]   *                     break             # <<<<<<<<<<<<<< @@ -5425,7 +5665,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList      __pyx_L10_break:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":61 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":61   *                     self.arr[bottom] = self.arr[top]   *                     break   *         self.arr[top] = pivot             # <<<<<<<<<<<<<< @@ -5436,7 +5676,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_6partition(struct __pyx_obj_3_sa_IntList    __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_top); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    (__pyx_v_self->arr[__pyx_t_1]) = __pyx_t_6; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":62 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":62   *                     break   *         self.arr[top] = pivot   *         return top             # <<<<<<<<<<<<<< @@ -5469,11 +5709,14 @@ static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, Py  static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_start = 0;    PyObject *__pyx_v_end = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_doquicksort (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__end,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -5487,12 +5730,10 @@ static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, Py        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__end)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("_doquicksort", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -5522,7 +5763,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_9_doquicksort(PyObject *__pyx_v_self, Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":64 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":64   *         return top   *    *     def _doquicksort(self,start,end):             # <<<<<<<<<<<<<< @@ -5543,27 +5784,26 @@ static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntL    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("_doquicksort", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":65 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":65   *    *     def _doquicksort(self,start,end):   *         if start < end:             # <<<<<<<<<<<<<<   *             split = self.partition(start,end)   *             self._doquicksort(start,split-1)   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_v_start, __pyx_v_end, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_v_start, __pyx_v_end, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":66 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":66   *     def _doquicksort(self,start,end):   *         if start < end:   *             split = self.partition(start,end)             # <<<<<<<<<<<<<<   *             self._doquicksort(start,split-1)   *             self._doquicksort(split+1,end)   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__partition); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__partition); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __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[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -5580,14 +5820,14 @@ static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntL      __pyx_v_split = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":67 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":67   *         if start < end:   *             split = self.partition(start,end)   *             self._doquicksort(start,split-1)             # <<<<<<<<<<<<<<   *             self._doquicksort(split+1,end)   *         else:   */ -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_3 = PyNumber_Subtract(__pyx_v_split, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -5605,14 +5845,14 @@ static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntL      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":68 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":68   *             split = self.partition(start,end)   *             self._doquicksort(start,split-1)   *             self._doquicksort(split+1,end)             # <<<<<<<<<<<<<<   *         else:   *             return   */ -    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_1 = PyNumber_Add(__pyx_v_split, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -5633,7 +5873,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_8_doquicksort(struct __pyx_obj_3_sa_IntL    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":70 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":70   *             self._doquicksort(split+1,end)   *         else:   *             return             # <<<<<<<<<<<<<< @@ -5672,7 +5912,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_11sort(PyObject *__pyx_v_self, CYTHON_UN    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":72 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":72   *             return   *    *     def sort(self):             # <<<<<<<<<<<<<< @@ -5691,14 +5931,14 @@ static PyObject *__pyx_pf_3_sa_7IntList_10sort(struct __pyx_obj_3_sa_IntList *__    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("sort", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":73 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":73   *    *     def sort(self):   *         self._doquicksort(0,self.len-1)             # <<<<<<<<<<<<<<   *    *     def reset(self):   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s___doquicksort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_2 = PyInt_FromLong((__pyx_v_self->len - 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -5741,7 +5981,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_13reset(PyObject *__pyx_v_self, CYTHON_U    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":75 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":75   *         self._doquicksort(0,self.len-1)   *    *     def reset(self):             # <<<<<<<<<<<<<< @@ -5754,7 +5994,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_12reset(struct __pyx_obj_3_sa_IntList *_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("reset", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":76 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":76   *    *     def reset(self):   *         self.len = 0             # <<<<<<<<<<<<<< @@ -5778,7 +6018,7 @@ static void __pyx_pw_3_sa_7IntList_15__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":78 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":78   *         self.len = 0   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -5790,7 +6030,7 @@ static void __pyx_pf_3_sa_7IntList_14__dealloc__(struct __pyx_obj_3_sa_IntList *    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":79 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":79   *    *     def __dealloc__(self):   *         free(self.arr)             # <<<<<<<<<<<<<< @@ -5814,7 +6054,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_17__iter__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":81 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":81   *         free(self.arr)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -5830,7 +6070,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_16__iter__(struct __pyx_obj_3_sa_IntList    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__iter__", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)__pyx_ptype_3_sa___pyx_scope_struct____iter__->tp_new(__pyx_ptype_3_sa___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct____iter__(__pyx_ptype_3_sa___pyx_scope_struct____iter__, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -5865,6 +6105,9 @@ static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx    int __pyx_t_1;    int __pyx_t_2;    PyObject *__pyx_t_3 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -5877,7 +6120,7 @@ static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":83 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":83   *     def __iter__(self):   *         cdef int i   *         for i in range(self.len):             # <<<<<<<<<<<<<< @@ -5888,7 +6131,7 @@ static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_cur_scope->__pyx_v_i = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":84 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":84   *         cdef int i   *         for i in range(self.len):   *             yield self.arr[i]             # <<<<<<<<<<<<<< @@ -5919,6 +6162,7 @@ static PyObject *__pyx_gb_3_sa_7IntList_18generator(__pyx_GeneratorObject *__pyx    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } @@ -5934,7 +6178,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_20__getitem__(PyObject *__pyx_v_self, Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":86 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":86   *             yield self.arr[i]   *    *     def __getitem__(self, index):             # <<<<<<<<<<<<<< @@ -5949,11 +6193,11 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL    PyObject *__pyx_v_result = NULL;    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations -  PyObject *__pyx_t_1 = NULL; +  int __pyx_t_1;    int __pyx_t_2;    int __pyx_t_3;    int __pyx_t_4; -  int __pyx_t_5; +  PyObject *__pyx_t_5 = NULL;    PyObject *__pyx_t_6 = NULL;    int __pyx_t_7;    int __pyx_t_8; @@ -5964,20 +6208,18 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__getitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":88 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":88   *     def __getitem__(self, index):   *         cdef int i, j, k   *         if isinstance(index, int):             # <<<<<<<<<<<<<<   *             j = index   *             if j < 0:   */ -  __pyx_t_1 = ((PyObject *)((PyObject*)(&PyInt_Type))); -  __Pyx_INCREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_index, __pyx_t_1);  -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __pyx_t_1 = PyInt_Check(__pyx_v_index);  +  __pyx_t_2 = (__pyx_t_1 != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":89 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":89   *         cdef int i, j, k   *         if isinstance(index, int):   *             j = index             # <<<<<<<<<<<<<< @@ -5987,17 +6229,17 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_index); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_v_j = __pyx_t_3; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":90 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":90   *         if isinstance(index, int):   *             j = index   *             if j < 0:             # <<<<<<<<<<<<<<   *                 j = self.len + j   *             if j<0 or j>=self.len:   */ -    __pyx_t_2 = (__pyx_v_j < 0); +    __pyx_t_2 = ((__pyx_v_j < 0) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":91 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":91   *             j = index   *             if j < 0:   *                 j = self.len + j             # <<<<<<<<<<<<<< @@ -6009,58 +6251,58 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":92 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":92   *             if j < 0:   *                 j = self.len + j   *             if j<0 or j>=self.len:             # <<<<<<<<<<<<<<   *                 raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))   *             return self.arr[j]   */ -    __pyx_t_2 = (__pyx_v_j < 0); +    __pyx_t_2 = ((__pyx_v_j < 0) != 0);      if (!__pyx_t_2) { -      __pyx_t_4 = (__pyx_v_j >= __pyx_v_self->len); -      __pyx_t_5 = __pyx_t_4; +      __pyx_t_1 = ((__pyx_v_j >= __pyx_v_self->len) != 0); +      __pyx_t_4 = __pyx_t_1;      } else { -      __pyx_t_5 = __pyx_t_2; +      __pyx_t_4 = __pyx_t_2;      } -    if (__pyx_t_5) { +    if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":93 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":93   *                 j = self.len + j   *             if j<0 or j>=self.len:   *                 raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))             # <<<<<<<<<<<<<<   *             return self.arr[j]   *         elif isinstance(index, slice):   */ -      __pyx_t_1 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_5 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __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[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __Pyx_INCREF(__pyx_v_index);        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_index);        __Pyx_GIVEREF(__pyx_v_index); -      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); -      __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(((PyObject *)__pyx_t_1)); +      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); +      __Pyx_GIVEREF(__pyx_t_5); +      __pyx_t_5 = 0; +      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(((PyObject *)__pyx_t_5));        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_1)); -      __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -      __pyx_t_1 = 0; -      __pyx_t_1 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_5)); +      __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); +      __pyx_t_5 = 0; +      __pyx_t_5 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -      __Pyx_Raise(__pyx_t_1, 0, 0, 0); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __Pyx_Raise(__pyx_t_5, 0, 0, 0); +      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;        {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        goto __pyx_L5;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":94 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":94   *             if j<0 or j>=self.len:   *                 raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))   *             return self.arr[j]             # <<<<<<<<<<<<<< @@ -6068,64 +6310,62 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL   *             i = index.start   */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_1 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_j])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_r = __pyx_t_1; -    __pyx_t_1 = 0; +    __pyx_t_5 = PyInt_FromLong((__pyx_v_self->arr[__pyx_v_j])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 94; __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_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":95 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":95   *                 raise IndexError("Requested index %d of %d-length IntList" % (index, self.len))   *             return self.arr[j]   *         elif isinstance(index, slice):             # <<<<<<<<<<<<<<   *             i = index.start   *             j = index.stop   */ -  __pyx_t_1 = ((PyObject *)((PyObject*)(&PySlice_Type))); -  __Pyx_INCREF(__pyx_t_1); -  __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_index, __pyx_t_1);  -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  if (__pyx_t_5) { +  __pyx_t_4 = PySlice_Check(__pyx_v_index);  +  __pyx_t_2 = (__pyx_t_4 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":96 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":96   *             return self.arr[j]   *         elif isinstance(index, slice):   *             i = index.start             # <<<<<<<<<<<<<<   *             j = index.stop   *             if i < 0:   */ -    __pyx_t_1 = PyObject_GetAttr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __pyx_v_i = __pyx_t_3; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":97 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":97   *         elif isinstance(index, slice):   *             i = index.start   *             j = index.stop             # <<<<<<<<<<<<<<   *             if i < 0:   *                 i = self.len + i   */ -    __pyx_t_1 = PyObject_GetAttr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __pyx_v_j = __pyx_t_3; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":98 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":98   *             i = index.start   *             j = index.stop   *             if i < 0:             # <<<<<<<<<<<<<<   *                 i = self.len + i   *             if j < 0:   */ -    __pyx_t_5 = (__pyx_v_i < 0); -    if (__pyx_t_5) { +    __pyx_t_2 = ((__pyx_v_i < 0) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":99 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":99   *             j = index.stop   *             if i < 0:   *                 i = self.len + i             # <<<<<<<<<<<<<< @@ -6137,17 +6377,17 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      }      __pyx_L6:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":100 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":100   *             if i < 0:   *                 i = self.len + i   *             if j < 0:             # <<<<<<<<<<<<<<   *                 j = self.len + j   *             if i < 0 or i >= self.len or j < 0 or j > self.len:   */ -    __pyx_t_5 = (__pyx_v_j < 0); -    if (__pyx_t_5) { +    __pyx_t_2 = ((__pyx_v_j < 0) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":101 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":101   *                 i = self.len + i   *             if j < 0:   *                 j = self.len + j             # <<<<<<<<<<<<<< @@ -6159,59 +6399,59 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":102 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":102   *             if j < 0:   *                 j = self.len + j   *             if i < 0 or i >= self.len or j < 0 or j > self.len:             # <<<<<<<<<<<<<<   *                 raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))   *             result = ()   */ -    __pyx_t_5 = (__pyx_v_i < 0); -    if (!__pyx_t_5) { -      __pyx_t_2 = (__pyx_v_i >= __pyx_v_self->len); -      if (!__pyx_t_2) { -        __pyx_t_4 = (__pyx_v_j < 0); -        if (!__pyx_t_4) { -          __pyx_t_7 = (__pyx_v_j > __pyx_v_self->len); +    __pyx_t_2 = ((__pyx_v_i < 0) != 0); +    if (!__pyx_t_2) { +      __pyx_t_4 = ((__pyx_v_i >= __pyx_v_self->len) != 0); +      if (!__pyx_t_4) { +        __pyx_t_1 = ((__pyx_v_j < 0) != 0); +        if (!__pyx_t_1) { +          __pyx_t_7 = ((__pyx_v_j > __pyx_v_self->len) != 0);            __pyx_t_8 = __pyx_t_7;          } else { -          __pyx_t_8 = __pyx_t_4; +          __pyx_t_8 = __pyx_t_1;          } -        __pyx_t_4 = __pyx_t_8; +        __pyx_t_1 = __pyx_t_8;        } else { -        __pyx_t_4 = __pyx_t_2; +        __pyx_t_1 = __pyx_t_4;        } -      __pyx_t_2 = __pyx_t_4; +      __pyx_t_4 = __pyx_t_1;      } else { -      __pyx_t_2 = __pyx_t_5; +      __pyx_t_4 = __pyx_t_2;      } -    if (__pyx_t_2) { +    if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":103 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":103   *                 j = self.len + j   *             if i < 0 or i >= self.len or j < 0 or j > self.len:   *                 raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))             # <<<<<<<<<<<<<<   *             result = ()   *             for k from i <= k < j:   */ -      __pyx_t_1 = PyObject_GetAttr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = PyObject_GetAttr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__start); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s__stop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __pyx_t_9 = PyInt_FromLong(__pyx_v_self->len); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10); -      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); +      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); +      __Pyx_GIVEREF(__pyx_t_5);        PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);        __Pyx_GIVEREF(__pyx_t_6);        PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9);        __Pyx_GIVEREF(__pyx_t_9); -      __pyx_t_1 = 0; +      __pyx_t_5 = 0;        __pyx_t_6 = 0;        __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_9));        __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;        __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6229,7 +6469,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      }      __pyx_L8:; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":104 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":104   *             if i < 0 or i >= self.len or j < 0 or j > self.len:   *                 raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))   *             result = ()             # <<<<<<<<<<<<<< @@ -6239,7 +6479,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));      __pyx_v_result = __pyx_empty_tuple; -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":105 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":105   *                 raise IndexError("Requested index %d:%d of %d-length IntList" % (index.start, index.stop, self.len))   *             result = ()   *             for k from i <= k < j:             # <<<<<<<<<<<<<< @@ -6249,7 +6489,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL      __pyx_t_3 = __pyx_v_j;      for (__pyx_v_k = __pyx_v_i; __pyx_v_k < __pyx_t_3; __pyx_v_k++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":106 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":106   *             result = ()   *             for k from i <= k < j:   *                 result = result + (self.arr[k],)             # <<<<<<<<<<<<<< @@ -6267,11 +6507,11 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL        __Pyx_GOTREF(((PyObject *)__pyx_t_9));        __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;        __Pyx_DECREF(((PyObject *)__pyx_v_result)); -      __pyx_v_result = __pyx_t_9; +      __pyx_v_result = ((PyObject*)__pyx_t_9);        __pyx_t_9 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":107 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":107   *             for k from i <= k < j:   *                 result = result + (self.arr[k],)   *             return result             # <<<<<<<<<<<<<< @@ -6286,14 +6526,14 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":109 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":109   *             return result   *         else:   *             raise TypeError("Illegal key type %s for IntList" % type(index))             # <<<<<<<<<<<<<<   *    *     cdef void set(self, int i, int val):   */ -    __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), ((PyObject *)Py_TYPE(__pyx_v_index))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)Py_TYPE(__pyx_v_index))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_9));      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10); @@ -6312,7 +6552,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL    __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_9);    __Pyx_XDECREF(__pyx_t_10); @@ -6325,7 +6565,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_19__getitem__(struct __pyx_obj_3_sa_IntL    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":111 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":111   *             raise TypeError("Illegal key type %s for IntList" % type(index))   *    *     cdef void set(self, int i, int val):             # <<<<<<<<<<<<<< @@ -6347,7 +6587,7 @@ static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_sel    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("set", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":112 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":112   *    *     cdef void set(self, int i, int val):   *         j = i             # <<<<<<<<<<<<<< @@ -6356,17 +6596,17 @@ static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_sel   */    __pyx_v_j = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":113 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":113   *     cdef void set(self, int i, int val):   *         j = i   *         if i<0:             # <<<<<<<<<<<<<<   *             j = self.len + i   *         if j<0 or j>=self.len:   */ -  __pyx_t_1 = (__pyx_v_i < 0); +  __pyx_t_1 = ((__pyx_v_i < 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":114 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":114   *         j = i   *         if i<0:   *             j = self.len + i             # <<<<<<<<<<<<<< @@ -6378,23 +6618,23 @@ static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_sel    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":115 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":115   *         if i<0:   *             j = self.len + i   *         if j<0 or j>=self.len:             # <<<<<<<<<<<<<<   *             raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))   *         self.arr[j] = val   */ -  __pyx_t_1 = (__pyx_v_j < 0); +  __pyx_t_1 = ((__pyx_v_j < 0) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_j >= __pyx_v_self->len); +    __pyx_t_2 = ((__pyx_v_j >= __pyx_v_self->len) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":116 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":116   *             j = self.len + i   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))             # <<<<<<<<<<<<<< @@ -6413,7 +6653,7 @@ static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_sel      __Pyx_GIVEREF(__pyx_t_5);      __pyx_t_4 = 0;      __pyx_t_5 = 0; -    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_5));      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6431,7 +6671,7 @@ static void __pyx_f_3_sa_7IntList_set(struct __pyx_obj_3_sa_IntList *__pyx_v_sel    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":117 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":117   *         if j<0 or j>=self.len:   *             raise IndexError("Requested index %d of %d-length IntList" % (i, self.len))   *         self.arr[j] = val             # <<<<<<<<<<<<<< @@ -6461,7 +6701,7 @@ static int __pyx_pw_3_sa_7IntList_22__setitem__(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":119 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":119   *         self.arr[j] = val   *    *     def __setitem__(self, i, val):             # <<<<<<<<<<<<<< @@ -6479,7 +6719,7 @@ static int __pyx_pf_3_sa_7IntList_21__setitem__(struct __pyx_obj_3_sa_IntList *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__setitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":120 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":120   *    *     def __setitem__(self, i, val):   *         self.set(i, val)             # <<<<<<<<<<<<<< @@ -6511,7 +6751,7 @@ static Py_ssize_t __pyx_pw_3_sa_7IntList_24__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":122 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":122   *         self.set(i, val)   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -6524,7 +6764,7 @@ static Py_ssize_t __pyx_pf_3_sa_7IntList_23__len__(struct __pyx_obj_3_sa_IntList    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":123 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":123   *    *     def __len__(self):   *         return self.len             # <<<<<<<<<<<<<< @@ -6551,7 +6791,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_26get_size(PyObject *__pyx_v_self, CYTHO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":125 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":125   *         return self.len   *    *     def get_size(self):             # <<<<<<<<<<<<<< @@ -6568,7 +6808,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_25get_size(struct __pyx_obj_3_sa_IntList    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_size", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":126 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":126   *    *     def get_size(self):   *         return self.size             # <<<<<<<<<<<<<< @@ -6598,6 +6838,9 @@ static PyObject *__pyx_pf_3_sa_7IntList_25get_size(struct __pyx_obj_3_sa_IntList  static PyObject *__pyx_pw_3_sa_7IntList_28append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/  static PyObject *__pyx_pw_3_sa_7IntList_28append(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {    int __pyx_v_val; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("append (wrapper)", 0); @@ -6615,7 +6858,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_28append(PyObject *__pyx_v_self, PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":128 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":128   *         return self.size   *    *     def append(self, int val):             # <<<<<<<<<<<<<< @@ -6628,7 +6871,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_27append(struct __pyx_obj_3_sa_IntList *    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("append", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":129 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":129   *    *     def append(self, int val):   *         self._append(val)             # <<<<<<<<<<<<<< @@ -6643,7 +6886,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_27append(struct __pyx_obj_3_sa_IntList *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":131 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":131   *         self._append(val)   *    *     cdef void _append(self, int val):             # <<<<<<<<<<<<<< @@ -6656,17 +6899,17 @@ static void __pyx_f_3_sa_7IntList__append(struct __pyx_obj_3_sa_IntList *__pyx_v    int __pyx_t_1;    __Pyx_RefNannySetupContext("_append", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":132 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":132   *    *     cdef void _append(self, int val):   *         if self.len == self.size:             # <<<<<<<<<<<<<<   *             self.size = self.size + self.increment   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   */ -  __pyx_t_1 = (__pyx_v_self->len == __pyx_v_self->size); +  __pyx_t_1 = ((__pyx_v_self->len == __pyx_v_self->size) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":133 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":133   *     cdef void _append(self, int val):   *         if self.len == self.size:   *             self.size = self.size + self.increment             # <<<<<<<<<<<<<< @@ -6675,7 +6918,7 @@ static void __pyx_f_3_sa_7IntList__append(struct __pyx_obj_3_sa_IntList *__pyx_v   */      __pyx_v_self->size = (__pyx_v_self->size + __pyx_v_self->increment); -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":134 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":134   *         if self.len == self.size:   *             self.size = self.size + self.increment   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))             # <<<<<<<<<<<<<< @@ -6687,7 +6930,7 @@ static void __pyx_f_3_sa_7IntList__append(struct __pyx_obj_3_sa_IntList *__pyx_v    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":135 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":135   *             self.size = self.size + self.increment   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   *         self.arr[self.len] = val             # <<<<<<<<<<<<<< @@ -6696,7 +6939,7 @@ static void __pyx_f_3_sa_7IntList__append(struct __pyx_obj_3_sa_IntList *__pyx_v   */    (__pyx_v_self->arr[__pyx_v_self->len]) = __pyx_v_val; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":136 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":136   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   *         self.arr[self.len] = val   *         self.len = self.len + 1             # <<<<<<<<<<<<<< @@ -6719,7 +6962,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_30extend(PyObject *__pyx_v_self, PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":138 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":138   *         self.len = self.len + 1   *    *     def extend(self, other):             # <<<<<<<<<<<<<< @@ -6730,13 +6973,12 @@ static PyObject *__pyx_pw_3_sa_7IntList_30extend(PyObject *__pyx_v_self, PyObjec  static PyObject *__pyx_pf_3_sa_7IntList_29extend(struct __pyx_obj_3_sa_IntList *__pyx_v_self, PyObject *__pyx_v_other) {    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations -  PyObject *__pyx_t_1 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("extend", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":139 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":139   *    *     def extend(self, other):   *         self._extend(other)             # <<<<<<<<<<<<<< @@ -6744,15 +6986,11 @@ static PyObject *__pyx_pf_3_sa_7IntList_29extend(struct __pyx_obj_3_sa_IntList *   *     cdef void _extend(self, IntList other):   */    if (!(likely(((__pyx_v_other) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_1 = __pyx_v_other; -  __Pyx_INCREF(__pyx_t_1); -  ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->_extend(__pyx_v_self, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1)); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->_extend(__pyx_v_self, ((struct __pyx_obj_3_sa_IntList *)__pyx_v_other));    __pyx_r = Py_None; __Pyx_INCREF(Py_None);    goto __pyx_L0;    __pyx_L1_error:; -  __Pyx_XDECREF(__pyx_t_1);    __Pyx_AddTraceback("_sa.IntList.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -6761,7 +6999,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_29extend(struct __pyx_obj_3_sa_IntList *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":141 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":141   *         self._extend(other)   *    *     cdef void _extend(self, IntList other):             # <<<<<<<<<<<<<< @@ -6773,7 +7011,7 @@ static void __pyx_f_3_sa_7IntList__extend(struct __pyx_obj_3_sa_IntList *__pyx_v    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_extend", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":142 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":142   *    *     cdef void _extend(self, IntList other):   *         self._extend_arr(other.arr, other.len)             # <<<<<<<<<<<<<< @@ -6785,7 +7023,7 @@ static void __pyx_f_3_sa_7IntList__extend(struct __pyx_obj_3_sa_IntList *__pyx_v    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":144 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":144   *         self._extend_arr(other.arr, other.len)   *    *     cdef void _extend_arr(self, int* other, int other_len):             # <<<<<<<<<<<<<< @@ -6798,17 +7036,17 @@ static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__p    int __pyx_t_1;    __Pyx_RefNannySetupContext("_extend_arr", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":145 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":145   *    *     cdef void _extend_arr(self, int* other, int other_len):   *         if self.size < self.len + other_len:             # <<<<<<<<<<<<<<   *             self.size = self.len + other_len   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   */ -  __pyx_t_1 = (__pyx_v_self->size < (__pyx_v_self->len + __pyx_v_other_len)); +  __pyx_t_1 = ((__pyx_v_self->size < (__pyx_v_self->len + __pyx_v_other_len)) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":146 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":146   *     cdef void _extend_arr(self, int* other, int other_len):   *         if self.size < self.len + other_len:   *             self.size = self.len + other_len             # <<<<<<<<<<<<<< @@ -6817,7 +7055,7 @@ static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__p   */      __pyx_v_self->size = (__pyx_v_self->len + __pyx_v_other_len); -    /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":147 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":147   *         if self.size < self.len + other_len:   *             self.size = self.len + other_len   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))             # <<<<<<<<<<<<<< @@ -6829,7 +7067,7 @@ static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__p    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":148 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":148   *             self.size = self.len + other_len   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   *         memcpy(self.arr+self.len, other, other_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -6838,7 +7076,7 @@ static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__p   */    memcpy((__pyx_v_self->arr + __pyx_v_self->len), __pyx_v_other, (__pyx_v_other_len * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":149 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":149   *             self.arr = <int*> realloc(self.arr, self.size*sizeof(int))   *         memcpy(self.arr+self.len, other, other_len*sizeof(int))   *         self.len = self.len + other_len             # <<<<<<<<<<<<<< @@ -6850,7 +7088,7 @@ static void __pyx_f_3_sa_7IntList__extend_arr(struct __pyx_obj_3_sa_IntList *__p    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":151 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":151   *         self.len = self.len + other_len   *    *     cdef void _clear(self):             # <<<<<<<<<<<<<< @@ -6862,7 +7100,7 @@ static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_clear", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":152 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":152   *    *     cdef void _clear(self):   *         free(self.arr)             # <<<<<<<<<<<<<< @@ -6871,7 +7109,7 @@ static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_   */    free(__pyx_v_self->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":153 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":153   *     cdef void _clear(self):   *         free(self.arr)   *         self.len = 0             # <<<<<<<<<<<<<< @@ -6880,7 +7118,7 @@ static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_   */    __pyx_v_self->len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":154 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":154   *         free(self.arr)   *         self.len = 0   *         self.size = 0             # <<<<<<<<<<<<<< @@ -6889,7 +7127,7 @@ static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_   */    __pyx_v_self->size = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":155 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":155   *         self.len = 0   *         self.size = 0   *         self.arr = <int*> malloc(0)             # <<<<<<<<<<<<<< @@ -6901,7 +7139,7 @@ static void __pyx_f_3_sa_7IntList__clear(struct __pyx_obj_3_sa_IntList *__pyx_v_    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":157 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":157   *         self.arr = <int*> malloc(0)   *    *     cdef void write_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -6913,7 +7151,7 @@ static void __pyx_f_3_sa_7IntList_write_handle(struct __pyx_obj_3_sa_IntList *__    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":158 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":158   *    *     cdef void write_handle(self, FILE* f):   *         fwrite(&(self.len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -6922,7 +7160,7 @@ static void __pyx_f_3_sa_7IntList_write_handle(struct __pyx_obj_3_sa_IntList *__   */    fwrite((&__pyx_v_self->len), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":159 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":159   *     cdef void write_handle(self, FILE* f):   *         fwrite(&(self.len), sizeof(int), 1, f)   *         fwrite(self.arr, sizeof(int), self.len, f)             # <<<<<<<<<<<<<< @@ -6938,11 +7176,14 @@ static void __pyx_f_3_sa_7IntList_write_handle(struct __pyx_obj_3_sa_IntList *__  static PyObject *__pyx_pw_3_sa_7IntList_32write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_7IntList_32write(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -6955,7 +7196,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_32write(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":161 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":161   *         fwrite(self.arr, sizeof(int), self.len, f)   *    *     def write(self, char* filename):             # <<<<<<<<<<<<<< @@ -6969,7 +7210,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":163 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":163   *     def write(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -6978,7 +7219,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *_   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":164 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":164   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.write_handle(f)             # <<<<<<<<<<<<<< @@ -6987,7 +7228,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *_   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":165 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":165   *         f = fopen(filename, "w")   *         self.write_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -7002,7 +7243,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":167 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":167   *         fclose(f)   *    *     cdef void read_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -7012,9 +7253,10 @@ static PyObject *__pyx_pf_3_sa_7IntList_31write(struct __pyx_obj_3_sa_IntList *_  static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__pyx_v_self, FILE *__pyx_v_f) {    __Pyx_RefNannyDeclarations +  int __pyx_t_1;    __Pyx_RefNannySetupContext("read_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":168 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":168   *    *     cdef void read_handle(self, FILE* f):   *         (self.arr)             # <<<<<<<<<<<<<< @@ -7023,7 +7265,7 @@ static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__p   */    __pyx_v_self->arr; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":169 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":169   *     cdef void read_handle(self, FILE* f):   *         (self.arr)   *         fread(&(self.len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -7032,7 +7274,7 @@ static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__p   */    fread((&__pyx_v_self->len), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":170 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":170   *         (self.arr)   *         fread(&(self.len), sizeof(int), 1, f)   *         self.arr = <int*> malloc(self.len * sizeof(int))             # <<<<<<<<<<<<<< @@ -7041,16 +7283,17 @@ static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__p   */    __pyx_v_self->arr = ((int *)malloc((__pyx_v_self->len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":171 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":171   *         fread(&(self.len), sizeof(int), 1, f)   *         self.arr = <int*> malloc(self.len * sizeof(int))   *         self.size = self.len             # <<<<<<<<<<<<<<   *         fread(self.arr, sizeof(int), self.len, f)   *    */ -  __pyx_v_self->size = __pyx_v_self->len; +  __pyx_t_1 = __pyx_v_self->len; +  __pyx_v_self->size = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":172 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":172   *         self.arr = <int*> malloc(self.len * sizeof(int))   *         self.size = self.len   *         fread(self.arr, sizeof(int), self.len, f)             # <<<<<<<<<<<<<< @@ -7066,11 +7309,14 @@ static void __pyx_f_3_sa_7IntList_read_handle(struct __pyx_obj_3_sa_IntList *__p  static PyObject *__pyx_pw_3_sa_7IntList_34read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_7IntList_34read(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -7083,7 +7329,7 @@ static PyObject *__pyx_pw_3_sa_7IntList_34read(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":174 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":174   *         fread(self.arr, sizeof(int), self.len, f)   *    *     def read(self, char* filename):             # <<<<<<<<<<<<<< @@ -7097,7 +7343,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_33read(struct __pyx_obj_3_sa_IntList *__    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":176 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":176   *     def read(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -7106,7 +7352,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_33read(struct __pyx_obj_3_sa_IntList *__   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":177 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":177   *         cdef FILE* f   *         f = fopen(filename, "r")   *         self.read_handle(f)             # <<<<<<<<<<<<<< @@ -7114,7 +7360,7 @@ static PyObject *__pyx_pf_3_sa_7IntList_33read(struct __pyx_obj_3_sa_IntList *__   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/int_list.pxi":178 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/int_list.pxi":178   *         f = fopen(filename, "r")   *         self.read_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -7141,7 +7387,7 @@ static int __pyx_pw_3_sa_9StringMap_1__cinit__(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":13 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":13   *     cdef int index(self, char *s)   *    *     def __cinit__(self):             # <<<<<<<<<<<<<< @@ -7154,7 +7400,7 @@ static int __pyx_pf_3_sa_9StringMap___cinit__(struct __pyx_obj_3_sa_StringMap *_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":14   *    *     def __cinit__(self):   *         self.vocab = stringmap_new()             # <<<<<<<<<<<<<< @@ -7177,7 +7423,7 @@ static void __pyx_pw_3_sa_9StringMap_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":16 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":16   *         self.vocab = stringmap_new()   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -7189,7 +7435,7 @@ static void __pyx_pf_3_sa_9StringMap_2__dealloc__(struct __pyx_obj_3_sa_StringMa    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":17   *    *     def __dealloc__(self):   *         stringmap_delete(self.vocab)             # <<<<<<<<<<<<<< @@ -7201,7 +7447,7 @@ static void __pyx_pf_3_sa_9StringMap_2__dealloc__(struct __pyx_obj_3_sa_StringMa    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":19 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":19   *         stringmap_delete(self.vocab)   *    *     cdef char *word(self, int i):             # <<<<<<<<<<<<<< @@ -7214,7 +7460,7 @@ static char *__pyx_f_3_sa_9StringMap_word(struct __pyx_obj_3_sa_StringMap *__pyx    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("word", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":20 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":20   *    *     cdef char *word(self, int i):   *         return stringmap_word(self.vocab, i)             # <<<<<<<<<<<<<< @@ -7230,7 +7476,7 @@ static char *__pyx_f_3_sa_9StringMap_word(struct __pyx_obj_3_sa_StringMap *__pyx    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":22 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":22   *         return stringmap_word(self.vocab, i)   *    *     cdef int index(self, char *s):             # <<<<<<<<<<<<<< @@ -7242,7 +7488,7 @@ static int __pyx_f_3_sa_9StringMap_index(struct __pyx_obj_3_sa_StringMap *__pyx_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("index", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/str_map.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/str_map.pxi":23   *    *     cdef int index(self, char *s):   *         return stringmap_index(self.vocab, s)             # <<<<<<<<<<<<<< @@ -7263,14 +7509,17 @@ static int __pyx_pw_3_sa_9DataArray_1__cinit__(PyObject *__pyx_v_self, PyObject    PyObject *__pyx_v_from_text = 0;    PyObject *__pyx_v_side = 0;    int __pyx_v_use_sent_id; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,&__pyx_n_s__use_sent_id,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,&__pyx_n_s__use_sent_id,0};      PyObject* values[4] = {0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":17 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":17   *     cdef bint use_sent_id   *    *     def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):             # <<<<<<<<<<<<<< @@ -7317,10 +7566,6 @@ static int __pyx_pw_3_sa_9DataArray_1__cinit__(PyObject *__pyx_v_self, PyObject        if (unlikely(kw_args > 0)) {          if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        } -      if (values[3]) { -      } else { -        __pyx_v_use_sent_id = ((int)0); -      }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) {          case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); @@ -7366,7 +7611,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":18   *    *     def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):   *         self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}             # <<<<<<<<<<<<<< @@ -7383,7 +7628,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_v_self->word2id = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":19 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":19   *     def __cinit__(self, from_binary=None, from_text=None, side=None, bint use_sent_id=False):   *         self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}   *         self.id2word = ["END_OF_FILE", "END_OF_LINE"]             # <<<<<<<<<<<<<< @@ -7404,14 +7649,14 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_v_self->id2word = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":20 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":20   *         self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}   *         self.id2word = ["END_OF_FILE", "END_OF_LINE"]   *         self.data = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_id = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->data); @@ -7419,14 +7664,14 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_v_self->data = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":21   *         self.id2word = ["END_OF_FILE", "END_OF_LINE"]   *         self.data = IntList(1000,1000)   *         self.sent_id = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_index = IntList(1000,1000)   *         self.use_sent_id = use_sent_id   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->sent_id); @@ -7434,14 +7679,14 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_v_self->sent_id = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":22   *         self.data = IntList(1000,1000)   *         self.sent_id = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.use_sent_id = use_sent_id   *         if from_binary:   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->sent_index); @@ -7449,7 +7694,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":23   *         self.sent_id = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)   *         self.use_sent_id = use_sent_id             # <<<<<<<<<<<<<< @@ -7458,7 +7703,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_   */    __pyx_v_self->use_sent_id = __pyx_v_use_sent_id; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":24 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":24   *         self.sent_index = IntList(1000,1000)   *         self.use_sent_id = use_sent_id   *         if from_binary:             # <<<<<<<<<<<<<< @@ -7468,14 +7713,14 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":25 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":25   *         self.use_sent_id = use_sent_id   *         if from_binary:   *             self.read_binary(from_binary)             # <<<<<<<<<<<<<<   *         elif from_text:   *             if side:   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; __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[3]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -7490,7 +7735,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":26 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":26   *         if from_binary:   *             self.read_binary(from_binary)   *         elif from_text:             # <<<<<<<<<<<<<< @@ -7500,7 +7745,7 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":27 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":27   *             self.read_binary(from_binary)   *         elif from_text:   *             if side:             # <<<<<<<<<<<<<< @@ -7510,16 +7755,18 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_side); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":28 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":28   *         elif from_text:   *             if side:   *                 self.read_bitext(from_text, (0 if side == 'source' else 1))             # <<<<<<<<<<<<<<   *             else:   *                 self.read_text(from_text)   */ -      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_bitext); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_bitext); 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_2 = __Pyx_PyString_Equals(__pyx_v_side, ((PyObject *)__pyx_n_s__source), Py_EQ); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_RichCompare(__pyx_v_side, ((PyObject *)__pyx_n_s__source), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        if (__pyx_t_2) {          __pyx_t_5 = 0;        } else { @@ -7544,14 +7791,14 @@ static int __pyx_pf_3_sa_9DataArray___cinit__(struct __pyx_obj_3_sa_DataArray *_      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":30 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":30   *                 self.read_bitext(from_text, (0 if side == 'source' else 1))   *             else:   *                 self.read_text(from_text)             # <<<<<<<<<<<<<<   *    *     def __len__(self):   */ -      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __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[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); @@ -7593,7 +7840,7 @@ static Py_ssize_t __pyx_pw_3_sa_9DataArray_3__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":32 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":32   *                 self.read_text(from_text)   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -7611,7 +7858,7 @@ static Py_ssize_t __pyx_pf_3_sa_9DataArray_2__len__(struct __pyx_obj_3_sa_DataAr    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":33   *    *     def __len__(self):   *         return len(self.data)             # <<<<<<<<<<<<<< @@ -7647,7 +7894,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_5get_sentence_id(PyObject *__pyx_v_sel    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":35 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":35   *         return len(self.data)   *    *     def get_sentence_id(self, i):             # <<<<<<<<<<<<<< @@ -7665,7 +7912,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_4get_sentence_id(struct __pyx_obj_3_sa    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_sentence_id", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":36 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":36   *    *     def get_sentence_id(self, i):   *         return self.sent_id.arr[i]             # <<<<<<<<<<<<<< @@ -7703,7 +7950,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_7get_sentence(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":38 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":38   *         return self.sent_id.arr[i]   *    *     def get_sentence(self, i):             # <<<<<<<<<<<<<< @@ -7728,7 +7975,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da    __Pyx_RefNannySetupContext("get_sentence", 0);    __Pyx_INCREF(__pyx_v_i); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":40   *     def get_sentence(self, i):   *         cdef int j, start, stop   *         sent = []             # <<<<<<<<<<<<<< @@ -7737,10 +7984,10 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_sent = __pyx_t_1; +  __pyx_v_sent = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":41   *         cdef int j, start, stop   *         sent = []   *         start = self.sent_index.arr[i]             # <<<<<<<<<<<<<< @@ -7750,7 +7997,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_t_2]); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":42 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":42   *         sent = []   *         start = self.sent_index.arr[i]   *         stop = self.sent_index.arr[i+1]             # <<<<<<<<<<<<<< @@ -7763,7 +8010,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_stop = (__pyx_v_self->sent_index->arr[__pyx_t_2]); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":43   *         start = self.sent_index.arr[i]   *         stop = self.sent_index.arr[i+1]   *         for i from start <= i < stop:             # <<<<<<<<<<<<<< @@ -7778,7 +8025,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da      __pyx_v_i = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":44 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":44   *         stop = self.sent_index.arr[i+1]   *         for i from start <= i < stop:   *             sent.append(self.id2word[self.data.arr[i]])             # <<<<<<<<<<<<<< @@ -7786,14 +8033,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da   *    */      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_2]), sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_2]), sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_5 = PyList_Append(__pyx_v_sent, __pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_sent, __pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":43   *         start = self.sent_index.arr[i]   *         stop = self.sent_index.arr[i+1]   *         for i from start <= i < stop:             # <<<<<<<<<<<<<< @@ -7806,7 +8053,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_6get_sentence(struct __pyx_obj_3_sa_Da    __pyx_v_i = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":45 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":45   *         for i from start <= i < stop:   *             sent.append(self.id2word[self.data.arr[i]])   *         return sent             # <<<<<<<<<<<<<< @@ -7843,7 +8090,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_9get_id(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":47 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":47   *         return sent   *    *     def get_id(self, word):             # <<<<<<<<<<<<<< @@ -7863,18 +8110,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_8get_id(struct __pyx_obj_3_sa_DataArra    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_id", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":48 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":48   *    *     def get_id(self, word):   *         if not word in self.word2id:             # <<<<<<<<<<<<<<   *             self.word2id[word] = len(self.id2word)   *             self.id2word.append(word)   */ -  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self->word2id, __pyx_v_word))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_2 = (!__pyx_t_1); +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_word, __pyx_v_self->word2id, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":49 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":49   *     def get_id(self, word):   *         if not word in self.word2id:   *             self.word2id[word] = len(self.id2word)             # <<<<<<<<<<<<<< @@ -7890,7 +8137,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_8get_id(struct __pyx_obj_3_sa_DataArra      if (PyObject_SetItem(__pyx_v_self->word2id, __pyx_v_word, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":50 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":50   *         if not word in self.word2id:   *             self.word2id[word] = len(self.id2word)   *             self.id2word.append(word)             # <<<<<<<<<<<<<< @@ -7904,7 +8151,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_8get_id(struct __pyx_obj_3_sa_DataArra    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":51 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":51   *             self.word2id[word] = len(self.id2word)   *             self.id2word.append(word)   *         return self.word2id[word]             # <<<<<<<<<<<<<< @@ -7941,7 +8188,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_11__getitem__(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":53 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":53   *         return self.word2id[word]   *    *     def __getitem__(self, loc):             # <<<<<<<<<<<<<< @@ -7959,7 +8206,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_10__getitem__(struct __pyx_obj_3_sa_Da    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__getitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":54   *    *     def __getitem__(self, loc):   *         return self.id2word[self.data.arr[loc]]             # <<<<<<<<<<<<<< @@ -7968,7 +8215,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_10__getitem__(struct __pyx_obj_3_sa_Da   */    __Pyx_XDECREF(__pyx_r);    __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_1]), sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->id2word, (__pyx_v_self->data->arr[__pyx_t_1]), sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __pyx_r = __pyx_t_2;    __pyx_t_2 = 0; @@ -7997,7 +8244,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_13get_sentence_bounds(PyObject *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":56 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":56   *         return self.id2word[self.data.arr[loc]]   *    *     def get_sentence_bounds(self, loc):             # <<<<<<<<<<<<<< @@ -8018,7 +8265,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_12get_sentence_bounds(struct __pyx_obj    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_sentence_bounds", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":57   *    *     def get_sentence_bounds(self, loc):   *         cdef int sid = self.sent_id.arr[loc]             # <<<<<<<<<<<<<< @@ -8028,7 +8275,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_12get_sentence_bounds(struct __pyx_obj    __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_sid = (__pyx_v_self->sent_id->arr[__pyx_t_1]); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":58 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":58   *     def get_sentence_bounds(self, loc):   *         cdef int sid = self.sent_id.arr[loc]   *         return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])             # <<<<<<<<<<<<<< @@ -8070,11 +8317,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_12get_sentence_bounds(struct __pyx_obj  static PyObject *__pyx_pw_3_sa_9DataArray_15write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9DataArray_15write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -8087,7 +8337,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_15write_text(PyObject *__pyx_v_self, P    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":60 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":60   *         return (self.sent_index.arr[sid], self.sent_index.arr[sid+1])   *    *     def write_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -8119,7 +8369,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":61 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -8127,7 +8377,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat   *                 if w_id > 1:   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); @@ -8140,9 +8390,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat      __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -8159,7 +8409,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":62 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":62   *     def write_text(self, char* filename):   *         with open(filename, "w") as f:   *             for w_id in self.data:             # <<<<<<<<<<<<<< @@ -8177,10 +8427,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_1 = __pyx_t_9(__pyx_t_4);                if (unlikely(!__pyx_t_1)) { @@ -8196,29 +8454,28 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat              __pyx_v_w_id = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":63 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":63   *         with open(filename, "w") as f:   *             for w_id in self.data:   *                 if w_id > 1:             # <<<<<<<<<<<<<<   *                     f.write("%s " % self.get_word(w_id))   *                 if w_id == 1:   */ -            __pyx_t_1 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -            __Pyx_GOTREF(__pyx_t_1); +            __pyx_t_1 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;              if (__pyx_t_10) { -              /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":64 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":64   *             for w_id in self.data:   *                 if w_id > 1:   *                     f.write("%s " % self.get_word(w_id))             # <<<<<<<<<<<<<<   *                 if w_id == 1:   *                     f.write("\n")   */ -              __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_1); -              __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_word); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_word); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_2);                __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_11); @@ -8229,7 +8486,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat                __Pyx_GOTREF(__pyx_t_12);                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;                __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; -              __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_13), __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_14), __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(((PyObject *)__pyx_t_11));                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;                __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L7_error;} @@ -8246,29 +8503,28 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat              }              __pyx_L18:; -            /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":65 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":65   *                 if w_id > 1:   *                     f.write("%s " % self.get_word(w_id))   *                 if w_id == 1:             # <<<<<<<<<<<<<<   *                     f.write("\n")   *    */ -            __pyx_t_11 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_EQ); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -            __Pyx_GOTREF(__pyx_t_11); +            __pyx_t_11 = PyObject_RichCompare(__pyx_v_w_id, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;              if (__pyx_t_10) { -              /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":66 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":66   *                     f.write("%s " % self.get_word(w_id))   *                 if w_id == 1:   *                     f.write("\n")             # <<<<<<<<<<<<<<   *    *     def read_text(self, char* filename):   */ -              __pyx_t_11 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_11); -              __pyx_t_12 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_12 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_12);                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; @@ -8289,7 +8545,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":61 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -8319,8 +8575,8 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat            __Pyx_GOTREF(__pyx_t_13);            __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_13);            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_14 = (!__pyx_t_10); +          if (__pyx_t_10 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_14 = ((!(__pyx_t_10 != 0)) != 0);            if (__pyx_t_14) {              __Pyx_GIVEREF(__pyx_t_4);              __Pyx_GIVEREF(__pyx_t_12); @@ -8353,13 +8609,13 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_16, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_17, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L23; @@ -8391,11 +8647,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_14write_text(struct __pyx_obj_3_sa_Dat  static PyObject *__pyx_pw_3_sa_9DataArray_17read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9DataArray_17read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -8408,7 +8667,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_17read_text(PyObject *__pyx_v_self, Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":68 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":68   *                     f.write("\n")   *    *     def read_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -8436,7 +8695,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":69 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<< @@ -8444,9 +8703,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data   *    */    /*with:*/ { -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2));      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -8457,9 +8716,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_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[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -8476,14 +8735,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data            __pyx_v_fp = __pyx_t_1;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":70 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":70   *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as fp:   *             self.read_text_data(fp)             # <<<<<<<<<<<<<<   *    *     def read_bitext(self, char* filename, int side):   */ -          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1);            __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); @@ -8505,7 +8764,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":69 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<< @@ -8535,8 +8794,8 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data            __Pyx_GOTREF(__pyx_t_10);            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_11 = (!__pyx_t_9); +          if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);            if (__pyx_t_11) {              __Pyx_GIVEREF(__pyx_t_3);              __Pyx_GIVEREF(__pyx_t_2); @@ -8569,13 +8828,13 @@ static PyObject *__pyx_pf_3_sa_9DataArray_16read_text(struct __pyx_obj_3_sa_Data      }      /*finally:*/ {        if (__pyx_t_4) { -        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_17, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_18, NULL);          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L19; @@ -8606,11 +8865,14 @@ static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self,  static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    char *__pyx_v_filename;    int __pyx_v_side; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_bitext (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -8624,12 +8886,10 @@ static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self,        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("read_bitext", 1, 2, 2, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -8643,7 +8903,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self,        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);      } -    __pyx_v_filename = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __pyx_v_side = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_side == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done; @@ -8660,7 +8920,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_19read_bitext(PyObject *__pyx_v_self,  }  static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":74 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74   *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:   *             data = (line.split(' ||| ')[side] for line in fp)             # <<<<<<<<<<<<<< @@ -8676,7 +8936,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_11read_bitext_genexpr(PyObject *__pyx_    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -8713,6 +8973,9 @@ static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_Genera    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -8736,10 +8999,18 @@ static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_Genera    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -8756,12 +9027,12 @@ static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_Genera      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_line = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_19), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_side, sizeof(int), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_side, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __pyx_r = __pyx_t_4; @@ -8794,11 +9065,12 @@ static PyObject *__pyx_gb_3_sa_9DataArray_11read_bitext_2generator6(__pyx_Genera    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":72 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":72   *             self.read_text_data(fp)   *    *     def read_bitext(self, char* filename, int side):             # <<<<<<<<<<<<<< @@ -8826,7 +9098,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_bitext", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(__pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -8834,7 +9106,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da    __Pyx_GOTREF(__pyx_cur_scope);    __pyx_cur_scope->__pyx_v_side = __pyx_v_side; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":73 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73   *    *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<< @@ -8842,9 +9114,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da   *             self.read_text_data(data)   */    /*with:*/ { -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2));      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -8855,9 +9127,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_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[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -8875,7 +9147,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da            __pyx_cur_scope->__pyx_v_fp = __pyx_t_1;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":74 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74   *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:   *             data = (line.split(' ||| ')[side] for line in fp)             # <<<<<<<<<<<<<< @@ -8887,14 +9159,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da            __pyx_v_data = __pyx_t_1;            __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":75 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":75   *         with gzip_or_text(filename) as fp:   *             data = (line.split(' ||| ')[side] for line in fp)   *             self.read_text_data(data)             # <<<<<<<<<<<<<<   *    *     def read_text_data(self, data):   */ -          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1);            __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); @@ -8916,7 +9188,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":73 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73   *    *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<< @@ -8946,8 +9218,8 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da            __Pyx_GOTREF(__pyx_t_10);            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_11 = (!__pyx_t_9); +          if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);            if (__pyx_t_11) {              __Pyx_GIVEREF(__pyx_t_3);              __Pyx_GIVEREF(__pyx_t_2); @@ -8980,13 +9252,13 @@ static PyObject *__pyx_pf_3_sa_9DataArray_18read_bitext(struct __pyx_obj_3_sa_Da      }      /*finally:*/ {        if (__pyx_t_4) { -        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_20, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_21, NULL);          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L19; @@ -9024,7 +9296,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_21read_text_data(PyObject *__pyx_v_sel    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":77 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":77   *             self.read_text_data(data)   *    *     def read_text_data(self, data):             # <<<<<<<<<<<<<< @@ -9049,12 +9321,13 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa    PyObject *(*__pyx_t_8)(PyObject *);    PyObject *__pyx_t_9 = NULL;    PyObject *__pyx_t_10 = NULL; +  int __pyx_t_11;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_text_data", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":78 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":78   *    *     def read_text_data(self, data):   *         cdef int word_count = 0             # <<<<<<<<<<<<<< @@ -9063,7 +9336,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa   */    __pyx_v_word_count = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":79 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":79   *     def read_text_data(self, data):   *         cdef int word_count = 0   *         for line_num, line in enumerate(data):             # <<<<<<<<<<<<<< @@ -9083,10 +9356,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_5 = __pyx_t_4(__pyx_t_2);        if (unlikely(!__pyx_t_5)) { @@ -9110,7 +9391,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      __pyx_t_1 = __pyx_t_5;      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":80 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":80   *         cdef int word_count = 0   *         for line_num, line in enumerate(data):   *             self.sent_index.append(word_count)             # <<<<<<<<<<<<<< @@ -9124,14 +9405,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":81 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":81   *         for line_num, line in enumerate(data):   *             self.sent_index.append(word_count)   *             for word in line.split():             # <<<<<<<<<<<<<<   *                 self.data.append(self.get_id(word))   *                 if self.use_sent_id:   */ -    __pyx_t_6 = PyObject_GetAttr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); @@ -9148,10 +9429,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      for (;;) {        if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_6)) {          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break; -        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_6)) {          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break; -        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_5 = __pyx_t_8(__pyx_t_6);          if (unlikely(!__pyx_t_5)) { @@ -9167,14 +9456,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa        __pyx_v_word = __pyx_t_5;        __pyx_t_5 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":82 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":82   *             self.sent_index.append(word_count)   *             for word in line.split():   *                 self.data.append(self.get_id(word))             # <<<<<<<<<<<<<<   *                 if self.use_sent_id:   *                     self.sent_id.append(line_num)   */ -      __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_id); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_id); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); @@ -9190,16 +9479,17 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":83 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":83   *             for word in line.split():   *                 self.data.append(self.get_id(word))   *                 if self.use_sent_id:             # <<<<<<<<<<<<<<   *                     self.sent_id.append(line_num)   *                 word_count = word_count + 1   */ -      if (__pyx_v_self->use_sent_id) { +      __pyx_t_11 = (__pyx_v_self->use_sent_id != 0); +      if (__pyx_t_11) { -        /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":84 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":84   *                 self.data.append(self.get_id(word))   *                 if self.use_sent_id:   *                     self.sent_id.append(line_num)             # <<<<<<<<<<<<<< @@ -9213,7 +9503,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa        }        __pyx_L7:; -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":85 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":85   *                 if self.use_sent_id:   *                     self.sent_id.append(line_num)   *                 word_count = word_count + 1             # <<<<<<<<<<<<<< @@ -9224,7 +9514,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      }      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":86 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":86   *                     self.sent_id.append(line_num)   *                 word_count = word_count + 1   *             self.data.append(1)             # <<<<<<<<<<<<<< @@ -9235,16 +9525,17 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":87 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":87   *                 word_count = word_count + 1   *             self.data.append(1)   *             if self.use_sent_id:             # <<<<<<<<<<<<<<   *                 self.sent_id.append(line_num)   *             word_count = word_count + 1   */ -    if (__pyx_v_self->use_sent_id) { +    __pyx_t_11 = (__pyx_v_self->use_sent_id != 0); +    if (__pyx_t_11) { -      /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":88 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":88   *             self.data.append(1)   *             if self.use_sent_id:   *                 self.sent_id.append(line_num)             # <<<<<<<<<<<<<< @@ -9258,7 +9549,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa      }      __pyx_L8:; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":89 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":89   *             if self.use_sent_id:   *                 self.sent_id.append(line_num)   *             word_count = word_count + 1             # <<<<<<<<<<<<<< @@ -9270,7 +9561,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":90 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":90   *                 self.sent_id.append(line_num)   *             word_count = word_count + 1   *         self.data.append(0)             # <<<<<<<<<<<<<< @@ -9281,7 +9572,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":91 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":91   *             word_count = word_count + 1   *         self.data.append(0)   *         self.sent_index.append(word_count)             # <<<<<<<<<<<<<< @@ -9319,11 +9610,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_20read_text_data(struct __pyx_obj_3_sa  static PyObject *__pyx_pw_3_sa_9DataArray_23read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9DataArray_23read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -9336,7 +9630,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_23read_binary(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":94 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":94   *    *    *     def read_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -9350,7 +9644,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_Da    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":96 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":96   *     def read_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -9359,7 +9653,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_Da   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":97 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":97   *         cdef FILE* f   *         f = fopen(filename, "r")   *         self.read_handle(f)             # <<<<<<<<<<<<<< @@ -9368,7 +9662,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_Da   */    ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->__pyx_vtab)->read_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":98 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":98   *         f = fopen(filename, "r")   *         self.read_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -9383,7 +9677,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_22read_binary(struct __pyx_obj_3_sa_Da    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":100 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":100   *         fclose(f)   *    *     cdef void read_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -9408,7 +9702,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":105 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":105   *         cdef char* word   *    *         self.data.read_handle(f)             # <<<<<<<<<<<<<< @@ -9417,7 +9711,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->data->__pyx_vtab)->read_handle(__pyx_v_self->data, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":106 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":106   *    *         self.data.read_handle(f)   *         self.sent_index.read_handle(f)             # <<<<<<<<<<<<<< @@ -9426,7 +9720,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->read_handle(__pyx_v_self->sent_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":107 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":107   *         self.data.read_handle(f)   *         self.sent_index.read_handle(f)   *         self.sent_id.read_handle(f)             # <<<<<<<<<<<<<< @@ -9435,7 +9729,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_id->__pyx_vtab)->read_handle(__pyx_v_self->sent_id, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":108 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":108   *         self.sent_index.read_handle(f)   *         self.sent_id.read_handle(f)   *         fread(&(num_words), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -9444,7 +9738,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */    fread((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":109 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":109   *         self.sent_id.read_handle(f)   *         fread(&(num_words), sizeof(int), 1, f)   *         for i in range(num_words):             # <<<<<<<<<<<<<< @@ -9455,7 +9749,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_v_i = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":110 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":110   *         fread(&(num_words), sizeof(int), 1, f)   *         for i in range(num_words):   *             fread(&(word_len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -9464,7 +9758,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */      fread((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":111 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":111   *         for i in range(num_words):   *             fread(&(word_len), sizeof(int), 1, f)   *             word = <char*> malloc (word_len * sizeof(char))             # <<<<<<<<<<<<<< @@ -9473,7 +9767,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */      __pyx_v_word = ((char *)malloc((__pyx_v_word_len * (sizeof(char))))); -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":112 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":112   *             fread(&(word_len), sizeof(int), 1, f)   *             word = <char*> malloc (word_len * sizeof(char))   *             fread(word, sizeof(char), word_len, f)             # <<<<<<<<<<<<<< @@ -9482,7 +9776,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray   */      fread(__pyx_v_word, (sizeof(char)), __pyx_v_word_len, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":113 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":113   *             word = <char*> malloc (word_len * sizeof(char))   *             fread(word, sizeof(char), word_len, f)   *             self.word2id[word] = len(self.id2word)             # <<<<<<<<<<<<<< @@ -9495,27 +9789,27 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_5 = PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_5));      if (PyObject_SetItem(__pyx_v_self->word2id, ((PyObject *)__pyx_t_5), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":114 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":114   *             fread(word, sizeof(char), word_len, f)   *             self.word2id[word] = len(self.id2word)   *             self.id2word.append(word)             # <<<<<<<<<<<<<<   *             free(word)   *         if len(self.sent_id) == 0:   */ -    __pyx_t_3 = PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_3));      __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->id2word, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":115 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":115   *             self.word2id[word] = len(self.id2word)   *             self.id2word.append(word)   *             free(word)             # <<<<<<<<<<<<<< @@ -9525,7 +9819,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray      free(__pyx_v_word);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":116 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":116   *             self.id2word.append(word)   *             free(word)   *         if len(self.sent_id) == 0:             # <<<<<<<<<<<<<< @@ -9536,10 +9830,10 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray    __Pyx_INCREF(__pyx_t_5);    __pyx_t_4 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -  __pyx_t_6 = (__pyx_t_4 == 0); +  __pyx_t_6 = ((__pyx_t_4 == 0) != 0);    if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":117 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":117   *             free(word)   *         if len(self.sent_id) == 0:   *             self.use_sent_id = False             # <<<<<<<<<<<<<< @@ -9551,7 +9845,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":119 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":119   *             self.use_sent_id = False   *         else:   *             self.use_sent_id = True             # <<<<<<<<<<<<<< @@ -9571,7 +9865,7 @@ static void __pyx_f_3_sa_9DataArray_read_handle(struct __pyx_obj_3_sa_DataArray    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":121 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":121   *             self.use_sent_id = True   *    *     cdef void write_handle(self, FILE* f):             # <<<<<<<<<<<<<< @@ -9595,7 +9889,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":125 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":125   *         cdef int num_words   *    *         self.data.write_handle(f)             # <<<<<<<<<<<<<< @@ -9604,7 +9898,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->data->__pyx_vtab)->write_handle(__pyx_v_self->data, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":126 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":126   *    *         self.data.write_handle(f)   *         self.sent_index.write_handle(f)             # <<<<<<<<<<<<<< @@ -9613,7 +9907,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->write_handle(__pyx_v_self->sent_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":127 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":127   *         self.data.write_handle(f)   *         self.sent_index.write_handle(f)   *         self.sent_id.write_handle(f)             # <<<<<<<<<<<<<< @@ -9622,7 +9916,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_id->__pyx_vtab)->write_handle(__pyx_v_self->sent_id, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":128 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":128   *         self.sent_index.write_handle(f)   *         self.sent_id.write_handle(f)   *         num_words = len(self.id2word) - 2             # <<<<<<<<<<<<<< @@ -9635,7 +9929,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_num_words = (__pyx_t_2 - 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":129 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":129   *         self.sent_id.write_handle(f)   *         num_words = len(self.id2word) - 2   *         fwrite(&(num_words), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -9644,14 +9938,14 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray   */    fwrite((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":130 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":130   *         num_words = len(self.id2word) - 2   *         fwrite(&(num_words), sizeof(int), 1, f)   *         for word in self.id2word[2:]:             # <<<<<<<<<<<<<<   *             word_len = len(word) + 1   *             fwrite(&(word_len), sizeof(int), 1, f)   */ -  __pyx_t_1 = __Pyx_PySequence_GetSlice(__pyx_v_self->id2word, 2, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_self->id2word, 2, 0, NULL, NULL, &__pyx_k_slice_22, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {      __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0; @@ -9665,10 +9959,18 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_3)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_3)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_1 = __pyx_t_4(__pyx_t_3);        if (unlikely(!__pyx_t_1)) { @@ -9684,7 +9986,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray      __pyx_v_word = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":131 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":131   *         fwrite(&(num_words), sizeof(int), 1, f)   *         for word in self.id2word[2:]:   *             word_len = len(word) + 1             # <<<<<<<<<<<<<< @@ -9694,7 +9996,7 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray      __pyx_t_5 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_v_word_len = (__pyx_t_5 + 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":132 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":132   *         for word in self.id2word[2:]:   *             word_len = len(word) + 1   *             fwrite(&(word_len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -9703,14 +10005,14 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray   */      fwrite((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":133 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":133   *             word_len = len(word) + 1   *             fwrite(&(word_len), sizeof(int), 1, f)   *             fwrite(<char *>word, sizeof(char), word_len, f)             # <<<<<<<<<<<<<<   *    *     def write_binary(self, char* filename):   */ -    __pyx_t_6 = PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      fwrite(((char *)__pyx_t_6), (sizeof(char)), __pyx_v_word_len, __pyx_v_f);    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -9729,11 +10031,14 @@ static void __pyx_f_3_sa_9DataArray_write_handle(struct __pyx_obj_3_sa_DataArray  static PyObject *__pyx_pw_3_sa_9DataArray_25write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9DataArray_25write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -9746,7 +10051,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_25write_binary(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":135 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":135   *             fwrite(<char *>word, sizeof(char), word_len, f)   *    *     def write_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -9760,7 +10065,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_24write_binary(struct __pyx_obj_3_sa_D    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":137 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":137   *     def write_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -9769,7 +10074,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_24write_binary(struct __pyx_obj_3_sa_D   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":138 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":138   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.write_handle(f)             # <<<<<<<<<<<<<< @@ -9778,7 +10083,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_24write_binary(struct __pyx_obj_3_sa_D   */    ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->__pyx_vtab)->write_handle(__pyx_v_self, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":139 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":139   *         f = fopen(filename, "w")   *         self.write_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -9804,7 +10109,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_27write_enhanced_handle(PyObject *__py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":141 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":141   *         fclose(f)   *    *     def write_enhanced_handle(self, f):             # <<<<<<<<<<<<<< @@ -9828,7 +10133,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_enhanced_handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":142 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":142   *    *     def write_enhanced_handle(self, f):   *         for i in self.data:             # <<<<<<<<<<<<<< @@ -9846,10 +10151,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -9865,16 +10178,16 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o      __pyx_v_i = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":143 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":143   *     def write_enhanced_handle(self, f):   *         for i in self.data:   *             f.write("%d " %i)             # <<<<<<<<<<<<<<   *         f.write("\n")   *         for i in self.sent_index:   */ -    __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 143; __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[3]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); @@ -9889,21 +10202,21 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":144 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":144   *         for i in self.data:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for i in self.sent_index:   *             f.write("%d " %i)   */ -  __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_22), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __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_5); __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":145 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":145   *             f.write("%d " %i)   *         f.write("\n")   *         for i in self.sent_index:             # <<<<<<<<<<<<<< @@ -9921,10 +10234,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_5)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_5)) break; -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_5)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_5)) break; -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_1 = __pyx_t_3(__pyx_t_5);        if (unlikely(!__pyx_t_1)) { @@ -9940,16 +10261,16 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o      __pyx_v_i = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":146 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":146   *         f.write("\n")   *         for i in self.sent_index:   *             f.write("%d " %i)             # <<<<<<<<<<<<<<   *         f.write("\n")   *         for i in self.sent_id:   */ -    __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_6));      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -9964,21 +10285,21 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    }    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":147 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":147   *         for i in self.sent_index:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for i in self.sent_id:   *             f.write("%d " %i)   */ -  __pyx_t_5 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_5); -  __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_23), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_25), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __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_6); __pyx_t_6 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":148 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":148   *             f.write("%d " %i)   *         f.write("\n")   *         for i in self.sent_id:             # <<<<<<<<<<<<<< @@ -9996,10 +10317,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_6)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_6)) break; -      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_6)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_6)) break; -      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_5 = __pyx_t_3(__pyx_t_6);        if (unlikely(!__pyx_t_5)) { @@ -10015,16 +10344,16 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o      __pyx_v_i = __pyx_t_5;      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":149 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":149   *         f.write("\n")   *         for i in self.sent_id:   *             f.write("%d " %i)             # <<<<<<<<<<<<<<   *         f.write("\n")   *         for word in self.id2word:   */ -    __pyx_t_5 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -10039,21 +10368,21 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    }    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":150 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":150   *         for i in self.sent_id:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for word in self.id2word:   *             f.write("%s %d " % (word, self.word2id[word]))   */ -  __pyx_t_6 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_6); -  __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":151 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":151   *             f.write("%d " %i)   *         f.write("\n")   *         for word in self.id2word:             # <<<<<<<<<<<<<< @@ -10071,10 +10400,18 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_6 = __pyx_t_3(__pyx_t_4);        if (unlikely(!__pyx_t_6)) { @@ -10090,14 +10427,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o      __pyx_v_word = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":152 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":152   *         f.write("\n")   *         for word in self.id2word:   *             f.write("%s %d " % (word, self.word2id[word]))             # <<<<<<<<<<<<<<   *         f.write("\n")   *    */ -    __pyx_t_6 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __pyx_t_1 = PyObject_GetItem(__pyx_v_self->word2id, __pyx_v_word); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -10109,7 +10446,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);      __Pyx_GIVEREF(__pyx_t_1);      __pyx_t_1 = 0; -    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_25), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -10125,16 +10462,16 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":153 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":153   *         for word in self.id2word:   *             f.write("%s %d " % (word, self.word2id[word]))   *         f.write("\n")             # <<<<<<<<<<<<<<   *    *     def write_enhanced(self, char* filename):   */ -  __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); -  __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_28), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __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_1); __pyx_t_1 = 0; @@ -10160,11 +10497,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_26write_enhanced_handle(struct __pyx_o  static PyObject *__pyx_pw_3_sa_9DataArray_29write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9DataArray_29write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -10177,7 +10517,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_29write_enhanced(PyObject *__pyx_v_sel    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":155 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":155   *         f.write("\n")   *    *     def write_enhanced(self, char* filename):             # <<<<<<<<<<<<<< @@ -10205,14 +10545,14 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_enhanced", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":156 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             self.write_enhanced_handle(self, f)   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); @@ -10225,9 +10565,9 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa      __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); 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_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -10244,12 +10584,12 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":157 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":157   *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:   *             self.write_enhanced_handle(self, f)             # <<<<<<<<<<<<<<   */ -          __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s_27); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_29); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4);            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1); @@ -10274,7 +10614,7 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":156 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -10303,8 +10643,8 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa            __Pyx_GOTREF(__pyx_t_10);            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_11 = (!__pyx_t_9); +          if (__pyx_t_9 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);            if (__pyx_t_11) {              __Pyx_GIVEREF(__pyx_t_2);              __Pyx_GIVEREF(__pyx_t_1); @@ -10337,13 +10677,13 @@ static PyObject *__pyx_pf_3_sa_9DataArray_28write_enhanced(struct __pyx_obj_3_sa      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_28, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_30, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L19; @@ -10380,7 +10720,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_7word2id_1__get__(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":10 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":10   *    * cdef class DataArray:   *     cdef public word2id             # <<<<<<<<<<<<<< @@ -10467,7 +10807,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_7id2word_1__get__(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":11 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":11   * cdef class DataArray:   *     cdef public word2id   *     cdef public id2word             # <<<<<<<<<<<<<< @@ -10554,7 +10894,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_4data_1__get__(PyObject *__pyx_v_self)    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":12 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":12   *     cdef public word2id   *     cdef public id2word   *     cdef public IntList data             # <<<<<<<<<<<<<< @@ -10650,7 +10990,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_7sent_id_1__get__(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":13 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":13   *     cdef public id2word   *     cdef public IntList data   *     cdef public IntList sent_id             # <<<<<<<<<<<<<< @@ -10746,7 +11086,7 @@ static PyObject *__pyx_pw_3_sa_9DataArray_10sent_index_1__get__(PyObject *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":14 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":14   *     cdef public IntList data   *     cdef public IntList sent_id   *     cdef public IntList sent_index             # <<<<<<<<<<<<<< @@ -10831,27 +11171,19 @@ static int __pyx_pf_3_sa_9DataArray_10sent_index_4__del__(struct __pyx_obj_3_sa_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":12 - *     cdef IntList sent_index - *  - *     cdef int link(self, int i, int j):             # <<<<<<<<<<<<<< - *         """Integerizes an alignment link pair""" - *         return i*65536 + j - */ -  static int __pyx_f_3_sa_9Alignment_link(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_i, int __pyx_v_j) {    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("link", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":16   *     cdef int link(self, int i, int j):   *         """Integerizes an alignment link pair""" - *         return i*65536 + j             # <<<<<<<<<<<<<< + *         return i * ALIGNMENT_CODE + j             # <<<<<<<<<<<<<<   *    *     def unlink(self, link):   */ -  __pyx_r = ((__pyx_v_i * 65536) + __pyx_v_j); +  __pyx_r = ((__pyx_v_i * __pyx_v_3_sa_ALIGNMENT_CODE) + __pyx_v_j);    goto __pyx_L0;    __pyx_r = 0; @@ -10872,12 +11204,12 @@ static PyObject *__pyx_pw_3_sa_9Alignment_1unlink(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":16 - *         return i*65536 + j +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":18 + *         return i * ALIGNMENT_CODE + j   *    *     def unlink(self, link):             # <<<<<<<<<<<<<<   *         """De-integerizes an alignment link pair""" - *         return (link/65536, link%65536) + *         return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)   */  static PyObject *__pyx_pf_3_sa_9Alignment_unlink(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, PyObject *__pyx_v_link) { @@ -10891,28 +11223,34 @@ static PyObject *__pyx_pf_3_sa_9Alignment_unlink(CYTHON_UNUSED struct __pyx_obj_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("unlink", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":20   *     def unlink(self, link):   *         """De-integerizes an alignment link pair""" - *         return (link/65536, link%65536)             # <<<<<<<<<<<<<< + *         return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)             # <<<<<<<<<<<<<<   *    *     cdef _unlink(self, int link, int* f, int* e):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_link, __pyx_int_65536); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyNumber_Remainder(__pyx_v_link, __pyx_int_65536); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_link, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __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[4]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __pyx_t_1 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_3 = PyNumber_Remainder(__pyx_v_link, __pyx_t_1); 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); -  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_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __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_t_1 = 0; +  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); +  __Pyx_GIVEREF(__pyx_t_3);    __pyx_t_2 = 0; -  __pyx_r = ((PyObject *)__pyx_t_3);    __pyx_t_3 = 0; +  __pyx_r = ((PyObject *)__pyx_t_1); +  __pyx_t_1 = 0;    goto __pyx_L0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -10929,38 +11267,76 @@ static PyObject *__pyx_pf_3_sa_9Alignment_unlink(CYTHON_UNUSED struct __pyx_obj_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":20 - *         return (link/65536, link%65536) +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":22 + *         return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)   *    *     cdef _unlink(self, int link, int* f, int* e):             # <<<<<<<<<<<<<< - *         f[0] = link/65536 - *         e[0] = link%65536 + *         f[0] = link / ALIGNMENT_CODE + *         e[0] = link % ALIGNMENT_CODE   */  static PyObject *__pyx_f_3_sa_9Alignment__unlink(CYTHON_UNUSED struct __pyx_obj_3_sa_Alignment *__pyx_v_self, int __pyx_v_link, int *__pyx_v_f, int *__pyx_v_e) {    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("_unlink", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":23   *    *     cdef _unlink(self, int link, int* f, int* e): - *         f[0] = link/65536             # <<<<<<<<<<<<<< - *         e[0] = link%65536 + *         f[0] = link / ALIGNMENT_CODE             # <<<<<<<<<<<<<< + *         e[0] = link % ALIGNMENT_CODE   *    */ -  (__pyx_v_f[0]) = __Pyx_div_long(__pyx_v_link, 65536); +  if (unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif +    PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif +    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_link))) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif +    PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif +    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  (__pyx_v_f[0]) = __Pyx_div_int(__pyx_v_link, __pyx_v_3_sa_ALIGNMENT_CODE); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":24   *     cdef _unlink(self, int link, int* f, int* e): - *         f[0] = link/65536 - *         e[0] = link%65536             # <<<<<<<<<<<<<< + *         f[0] = link / ALIGNMENT_CODE + *         e[0] = link % ALIGNMENT_CODE             # <<<<<<<<<<<<<<   *    *     def get_sent_links(self, int sent_id):   */ -  (__pyx_v_e[0]) = __Pyx_mod_long(__pyx_v_link, 65536); +  if (unlikely(__pyx_v_3_sa_ALIGNMENT_CODE == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif +    PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif +    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  (__pyx_v_e[0]) = __Pyx_mod_int(__pyx_v_link, __pyx_v_3_sa_ALIGNMENT_CODE);    __pyx_r = Py_None; __Pyx_INCREF(Py_None); +  goto __pyx_L0; +  __pyx_L1_error:; +  __Pyx_AddTraceback("_sa.Alignment._unlink", __pyx_clineno, __pyx_lineno, __pyx_filename); +  __pyx_r = 0; +  __pyx_L0:;    __Pyx_XGIVEREF(__pyx_r);    __Pyx_RefNannyFinishContext();    return __pyx_r; @@ -10970,11 +11346,14 @@ static PyObject *__pyx_f_3_sa_9Alignment__unlink(CYTHON_UNUSED struct __pyx_obj_  static PyObject *__pyx_pw_3_sa_9Alignment_3get_sent_links(PyObject *__pyx_v_self, PyObject *__pyx_arg_sent_id); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_3get_sent_links(PyObject *__pyx_v_self, PyObject *__pyx_arg_sent_id) {    int __pyx_v_sent_id; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("get_sent_links (wrapper)", 0);    assert(__pyx_arg_sent_id); { -    __pyx_v_sent_id = __Pyx_PyInt_AsInt(__pyx_arg_sent_id); if (unlikely((__pyx_v_sent_id == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_sent_id = __Pyx_PyInt_AsInt(__pyx_arg_sent_id); if (unlikely((__pyx_v_sent_id == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -10987,8 +11366,8 @@ static PyObject *__pyx_pw_3_sa_9Alignment_3get_sent_links(PyObject *__pyx_v_self    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":24 - *         e[0] = link%65536 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":26 + *         e[0] = link % ALIGNMENT_CODE   *    *     def get_sent_links(self, int sent_id):             # <<<<<<<<<<<<<<   *         cdef IntList sent_links @@ -11007,19 +11386,19 @@ static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_sent_links", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":28 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":30   *         cdef int* arr   *         cdef int arr_len   *         sent_links = IntList()             # <<<<<<<<<<<<<<   *         arr = self._get_sent_links(sent_id, &arr_len)   *         sent_links._extend_arr(arr, arr_len*2)   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_sent_links = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":29 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":31   *         cdef int arr_len   *         sent_links = IntList()   *         arr = self._get_sent_links(sent_id, &arr_len)             # <<<<<<<<<<<<<< @@ -11028,7 +11407,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_   */    __pyx_v_arr = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->_get_sent_links(__pyx_v_self, __pyx_v_sent_id, (&__pyx_v_arr_len)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":32   *         sent_links = IntList()   *         arr = self._get_sent_links(sent_id, &arr_len)   *         sent_links._extend_arr(arr, arr_len*2)             # <<<<<<<<<<<<<< @@ -11037,7 +11416,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sent_links->__pyx_vtab)->_extend_arr(__pyx_v_sent_links, __pyx_v_arr, (__pyx_v_arr_len * 2)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":33   *         arr = self._get_sent_links(sent_id, &arr_len)   *         sent_links._extend_arr(arr, arr_len*2)   *         free(arr)             # <<<<<<<<<<<<<< @@ -11046,7 +11425,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_   */    free(__pyx_v_arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":32 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":34   *         sent_links._extend_arr(arr, arr_len*2)   *         free(arr)   *         return sent_links             # <<<<<<<<<<<<<< @@ -11071,7 +11450,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_2get_sent_links(struct __pyx_obj_3_sa_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":34 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":36   *         return sent_links   *    *     cdef int* _get_sent_links(self, int sent_id, int* num_links):             # <<<<<<<<<<<<<< @@ -11093,7 +11472,7 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("_get_sent_links", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":37 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":39   *         cdef int* sent_links   *         cdef int i, start, end   *         start = self.sent_index.arr[sent_id]             # <<<<<<<<<<<<<< @@ -11102,7 +11481,7 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm   */    __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_v_sent_id]); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":38 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":40   *         cdef int i, start, end   *         start = self.sent_index.arr[sent_id]   *         end = self.sent_index.arr[sent_id+1]             # <<<<<<<<<<<<<< @@ -11111,7 +11490,7 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm   */    __pyx_v_end = (__pyx_v_self->sent_index->arr[(__pyx_v_sent_id + 1)]); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":39 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":41   *         start = self.sent_index.arr[sent_id]   *         end = self.sent_index.arr[sent_id+1]   *         num_links[0] = end - start             # <<<<<<<<<<<<<< @@ -11120,7 +11499,7 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm   */    (__pyx_v_num_links[0]) = (__pyx_v_end - __pyx_v_start); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":42   *         end = self.sent_index.arr[sent_id+1]   *         num_links[0] = end - start   *         sent_links = <int*> malloc(2*num_links[0]*sizeof(int))             # <<<<<<<<<<<<<< @@ -11129,7 +11508,7 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm   */    __pyx_v_sent_links = ((int *)malloc(((2 * (__pyx_v_num_links[0])) * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":43   *         num_links[0] = end - start   *         sent_links = <int*> malloc(2*num_links[0]*sizeof(int))   *         for i from 0 <= i < num_links[0]:             # <<<<<<<<<<<<<< @@ -11139,19 +11518,19 @@ static int *__pyx_f_3_sa_9Alignment__get_sent_links(struct __pyx_obj_3_sa_Alignm    __pyx_t_1 = (__pyx_v_num_links[0]);    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":42 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":44   *         sent_links = <int*> malloc(2*num_links[0]*sizeof(int))   *         for i from 0 <= i < num_links[0]:   *             self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)             # <<<<<<<<<<<<<<   *         return sent_links   *    */ -    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->_unlink(__pyx_v_self, (__pyx_v_self->links->arr[(__pyx_v_start + __pyx_v_i)]), (__pyx_v_sent_links + (2 * __pyx_v_i)), ((__pyx_v_sent_links + (2 * __pyx_v_i)) + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->_unlink(__pyx_v_self, (__pyx_v_self->links->arr[(__pyx_v_start + __pyx_v_i)]), (__pyx_v_sent_links + (2 * __pyx_v_i)), ((__pyx_v_sent_links + (2 * __pyx_v_i)) + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":45   *         for i from 0 <= i < num_links[0]:   *             self._unlink(self.links.arr[start + i], sent_links + (2*i), sent_links + (2*i) + 1)   *         return sent_links             # <<<<<<<<<<<<<< @@ -11177,14 +11556,17 @@ static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject  static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_from_binary = 0;    PyObject *__pyx_v_from_text = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,0};      PyObject* values[2] = {0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":45 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":47   *         return sent_links   *    *     def __cinit__(self, from_binary=None, from_text=None):             # <<<<<<<<<<<<<< @@ -11216,7 +11598,7 @@ static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -11231,7 +11613,7 @@ static int __pyx_pw_3_sa_9Alignment_5__cinit__(PyObject *__pyx_v_self, PyObject    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.Alignment.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -11254,14 +11636,14 @@ static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":46 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":48   *    *     def __cinit__(self, from_binary=None, from_text=None):   *         self.links = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_index = IntList(1000,1000)   *         if from_binary:   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_31), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->links); @@ -11269,14 +11651,14 @@ static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *    __pyx_v_self->links = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":47 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":49   *     def __cinit__(self, from_binary=None, from_text=None):   *         self.links = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         if from_binary:   *             self.read_binary(from_binary)   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->sent_index); @@ -11284,31 +11666,31 @@ static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *    __pyx_v_self->sent_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":48 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":50   *         self.links = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)   *         if from_binary:             # <<<<<<<<<<<<<<   *             self.read_binary(from_binary)   *         elif from_text:   */ -  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":49 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":51   *         self.sent_index = IntList(1000,1000)   *         if from_binary:   *             self.read_binary(from_binary)             # <<<<<<<<<<<<<<   *         elif from_text:   *             self.read_text(from_text)   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __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[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_from_binary);      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_binary);      __Pyx_GIVEREF(__pyx_v_from_binary); -    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; @@ -11316,31 +11698,31 @@ static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":50 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":52   *         if from_binary:   *             self.read_binary(from_binary)   *         elif from_text:             # <<<<<<<<<<<<<<   *             self.read_text(from_text)   *    */ -  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":51 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":53   *             self.read_binary(from_binary)   *         elif from_text:   *             self.read_text(from_text)             # <<<<<<<<<<<<<<   *    *     def read_text(self, char* filename):   */ -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __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[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_from_text);      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_text);      __Pyx_GIVEREF(__pyx_v_from_text); -    __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; @@ -11366,11 +11748,14 @@ static int __pyx_pf_3_sa_9Alignment_4__cinit__(struct __pyx_obj_3_sa_Alignment *  static PyObject *__pyx_pw_3_sa_9Alignment_7read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_7read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -11383,7 +11768,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_7read_text(PyObject *__pyx_v_self, PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":53 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":55   *             self.read_text(from_text)   *    *     def read_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -11425,7 +11810,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<< @@ -11433,24 +11818,24 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align   *                 self.sent_index.append(len(self.links))   */    /*with:*/ { -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));      __Pyx_GIVEREF(((PyObject *)__pyx_t_2));      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __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_t_3)); __pyx_t_3 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_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[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -11465,7 +11850,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align            __pyx_v_f = __pyx_t_1;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":55 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":57   *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as f:   *             for line in f:             # <<<<<<<<<<<<<< @@ -11476,23 +11861,31 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align              __pyx_t_1 = __pyx_v_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;              __pyx_t_9 = NULL;            } else { -            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1);              __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;            }            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_2 = __pyx_t_9(__pyx_t_1);                if (unlikely(!__pyx_t_2)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  }                  break;                } @@ -11502,7 +11895,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align              __pyx_v_line = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":56 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":58   *         with gzip_or_text(filename) as f:   *             for line in f:   *                 self.sent_index.append(len(self.links))             # <<<<<<<<<<<<<< @@ -11511,32 +11904,32 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align   */              __pyx_t_2 = ((PyObject *)__pyx_v_self->links);              __Pyx_INCREF(__pyx_t_2); -            __pyx_t_10 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -            __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2); -            __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_3);              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":57 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":59   *             for line in f:   *                 self.sent_index.append(len(self.links))   *                 pairs = line.split()             # <<<<<<<<<<<<<<   *                 for pair in pairs:   *                     (i, j) = map(int, pair.split('-'))   */ -            __pyx_t_3 = PyObject_GetAttr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_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[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2);              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;              __Pyx_XDECREF(__pyx_v_pairs);              __pyx_v_pairs = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":58 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":60   *                 self.sent_index.append(len(self.links))   *                 pairs = line.split()   *                 for pair in pairs:             # <<<<<<<<<<<<<< @@ -11547,23 +11940,31 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align                __pyx_t_2 = __pyx_v_pairs; __Pyx_INCREF(__pyx_t_2); __pyx_t_10 = 0;                __pyx_t_11 = NULL;              } else { -              __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_pairs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_10 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_pairs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_2);                __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext;              }              for (;;) {                if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_2)) {                  if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_2)) break; -                __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; +                #if CYTHON_COMPILING_IN_CPYTHON +                __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                #else +                __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                #endif                } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_2)) {                  if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -                __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; +                #if CYTHON_COMPILING_IN_CPYTHON +                __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                #else +                __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                #endif                } else {                  __pyx_t_3 = __pyx_t_11(__pyx_t_2);                  if (unlikely(!__pyx_t_3)) {                    if (PyErr_Occurred()) {                      if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                    else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                    else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                    }                    break;                  } @@ -11573,19 +11974,19 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align                __pyx_v_pair = __pyx_t_3;                __pyx_t_3 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":59 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":61   *                 pairs = line.split()   *                 for pair in pairs:   *                     (i, j) = map(int, pair.split('-'))             # <<<<<<<<<<<<<<   *                     self.links.append(self.link(i, j))   *             self.sent_index.append(len(self.links))   */ -              __pyx_t_3 = PyObject_GetAttr(__pyx_v_pair, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pair, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_3); -              __pyx_t_12 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_12 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_34), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_12);                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -              __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_3);                __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));                PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)((PyObject*)(&PyInt_Type)))); @@ -11593,34 +11994,42 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align                PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12);                __Pyx_GIVEREF(__pyx_t_12);                __pyx_t_12 = 0; -              __pyx_t_12 = PyObject_Call(__pyx_builtin_map, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_12 = PyObject_Call(__pyx_builtin_map, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_12);                __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;                if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {                  PyObject* sequence = __pyx_t_12; +                #if CYTHON_COMPILING_IN_CPYTHON +                Py_ssize_t size = Py_SIZE(sequence); +                #else +                Py_ssize_t size = PySequence_Size(sequence); +                #endif +                if (unlikely(size != 2)) { +                  if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                  {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                } +                #if CYTHON_COMPILING_IN_CPYTHON                  if (likely(PyTuple_CheckExact(sequence))) { -                  if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                    if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                  }                    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);                     __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1);                   } else { -                  if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                    if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                  }                    __pyx_t_3 = PyList_GET_ITEM(sequence, 0);                     __pyx_t_13 = PyList_GET_ITEM(sequence, 1);                   }                  __Pyx_INCREF(__pyx_t_3);                  __Pyx_INCREF(__pyx_t_13); +                #else +                __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __Pyx_GOTREF(__pyx_t_3); +                __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __Pyx_GOTREF(__pyx_t_13); +                #endif                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              } else { +              } else +              {                  Py_ssize_t index = -1; -                __pyx_t_14 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __pyx_t_14 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;                  __pyx_t_15 = Py_TYPE(__pyx_t_14)->tp_iternext; @@ -11628,14 +12037,15 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align                  __Pyx_GOTREF(__pyx_t_3);                  index = 1; __pyx_t_13 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L20_unpacking_failed;                  __Pyx_GOTREF(__pyx_t_13); -                if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __pyx_t_15 = NULL;                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                  goto __pyx_L21_unpacking_done;                  __pyx_L20_unpacking_failed:;                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -                if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __pyx_t_15 = NULL; +                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +                {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  __pyx_L21_unpacking_done:;                }                __Pyx_XDECREF(__pyx_v_i); @@ -11645,18 +12055,18 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align                __pyx_v_j = __pyx_t_13;                __pyx_t_13 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":60 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":62   *                 for pair in pairs:   *                     (i, j) = map(int, pair.split('-'))   *                     self.links.append(self.link(i, j))             # <<<<<<<<<<<<<<   *             self.sent_index.append(len(self.links))   *    */ -              __pyx_t_16 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -              __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -              __pyx_t_12 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->link(__pyx_v_self, __pyx_t_16, __pyx_t_17)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_16 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_12 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->__pyx_vtab)->link(__pyx_v_self, __pyx_t_16, __pyx_t_17)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_12); -              __pyx_t_13 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->links), __pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_13 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->links), __pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_13);                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -11665,7 +12075,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align            }            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":61 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":63   *                     (i, j) = map(int, pair.split('-'))   *                     self.links.append(self.link(i, j))   *             self.sent_index.append(len(self.links))             # <<<<<<<<<<<<<< @@ -11674,11 +12084,11 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align   */            __pyx_t_1 = ((PyObject *)__pyx_v_self->links);            __Pyx_INCREF(__pyx_t_1); -          __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1); -          __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->sent_index), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2);            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -11695,7 +12105,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":54 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<< @@ -11704,11 +12114,11 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align   */          /*except:*/ {            __Pyx_AddTraceback("_sa.Alignment.read_text", __pyx_clineno, __pyx_lineno, __pyx_filename); -          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_2);            __Pyx_GOTREF(__pyx_t_1);            __Pyx_GOTREF(__pyx_t_13); -          __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_12);            __Pyx_INCREF(__pyx_t_2);            PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); @@ -11721,19 +12131,19 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align            __Pyx_GIVEREF(__pyx_t_13);            __pyx_t_19 = PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_19);            __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_t_19);            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; -          if (unlikely(__pyx_t_18 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_20 = (!__pyx_t_18); +          if (__pyx_t_18 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_20 = ((!(__pyx_t_18 != 0)) != 0);            if (__pyx_t_20) {              __Pyx_GIVEREF(__pyx_t_2);              __Pyx_GIVEREF(__pyx_t_1);              __Pyx_GIVEREF(__pyx_t_13);              __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_13);              __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_13 = 0;  -            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}              goto __pyx_L24;            }            __pyx_L24:; @@ -11759,13 +12169,13 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align      }      /*finally:*/ {        if (__pyx_t_4) { -        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_33, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_35, NULL);          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_20 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L25; @@ -11802,11 +12212,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_6read_text(struct __pyx_obj_3_sa_Align  static PyObject *__pyx_pw_3_sa_9Alignment_9read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_9read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -11819,7 +12232,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_9read_binary(PyObject *__pyx_v_self, P    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":63 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":65   *             self.sent_index.append(len(self.links))   *    *     def read_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -11833,7 +12246,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Ali    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":65 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":67   *     def read_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -11842,7 +12255,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Ali   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":68   *         cdef FILE* f   *         f = fopen(filename, "r")   *         self.links.read_handle(f)             # <<<<<<<<<<<<<< @@ -11851,7 +12264,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Ali   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->links->__pyx_vtab)->read_handle(__pyx_v_self->links, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":67 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":69   *         f = fopen(filename, "r")   *         self.links.read_handle(f)   *         self.sent_index.read_handle(f)             # <<<<<<<<<<<<<< @@ -11860,7 +12273,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Ali   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->read_handle(__pyx_v_self->sent_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":68 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":70   *         self.links.read_handle(f)   *         self.sent_index.read_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -11879,11 +12292,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_8read_binary(struct __pyx_obj_3_sa_Ali  static PyObject *__pyx_pw_3_sa_9Alignment_11write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_11write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -11896,7 +12312,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_11write_text(PyObject *__pyx_v_self, P    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":70 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":72   *         fclose(f)   *    *     def write_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -11931,7 +12347,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -11939,9 +12355,9 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali   *             for i, link in enumerate(self.links):   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __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)); @@ -11949,14 +12365,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));      __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __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; @@ -11971,7 +12387,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":72 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":74   *     def write_text(self, char* filename):   *         with open(filename, "w") as f:   *             sent_num = 0             # <<<<<<<<<<<<<< @@ -11981,7 +12397,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali            __Pyx_INCREF(__pyx_int_0);            __pyx_v_sent_num = __pyx_int_0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":73 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":75   *         with open(filename, "w") as f:   *             sent_num = 0   *             for i, link in enumerate(self.links):             # <<<<<<<<<<<<<< @@ -11994,23 +12410,31 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali              __pyx_t_1 = ((PyObject *)__pyx_v_self->links); __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;              __pyx_t_9 = NULL;            } else { -            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1);              __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;            }            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_2 = __pyx_t_9(__pyx_t_1);                if (unlikely(!__pyx_t_2)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  }                  break;                } @@ -12022,13 +12446,13 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali              __Pyx_INCREF(__pyx_t_4);              __Pyx_XDECREF(__pyx_v_i);              __pyx_v_i = __pyx_t_4; -            __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2);              __Pyx_DECREF(__pyx_t_4);              __pyx_t_4 = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":74 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":76   *             sent_num = 0   *             for i, link in enumerate(self.links):   *                 while i >= self.sent_index[sent_num]:             # <<<<<<<<<<<<<< @@ -12036,72 +12460,71 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali   *                     sent_num = sent_num + 1   */              while (1) { -              __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->sent_index), __pyx_v_sent_num); if (!__pyx_t_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->sent_index), __pyx_v_sent_num); if (!__pyx_t_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_2); -              __pyx_t_10 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -              __Pyx_GOTREF(__pyx_t_10); +              __pyx_t_10 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -              __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                if (!__pyx_t_11) break; -              /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":75 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":77   *             for i, link in enumerate(self.links):   *                 while i >= self.sent_index[sent_num]:   *                     f.write("\n")             # <<<<<<<<<<<<<<   *                     sent_num = sent_num + 1   *                 f.write("%d-%d " % self.unlink(link))   */ -              __pyx_t_10 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_10); -              __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_34), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_2 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_36), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_2);                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":76 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":78   *                 while i >= self.sent_index[sent_num]:   *                     f.write("\n")   *                     sent_num = sent_num + 1             # <<<<<<<<<<<<<<   *                 f.write("%d-%d " % self.unlink(link))   *             f.write("\n")   */ -              __pyx_t_2 = PyNumber_Add(__pyx_v_sent_num, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_2 = PyNumber_Add(__pyx_v_sent_num, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_2);                __Pyx_DECREF(__pyx_v_sent_num);                __pyx_v_sent_num = __pyx_t_2;                __pyx_t_2 = 0;              } -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":77 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":79   *                     f.write("\n")   *                     sent_num = sent_num + 1   *                 f.write("%d-%d " % self.unlink(link))             # <<<<<<<<<<<<<<   *             f.write("\n")   *    */ -            __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2); -            __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_12);              __Pyx_INCREF(__pyx_v_link);              PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_link);              __Pyx_GIVEREF(__pyx_v_link); -            __pyx_t_13 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_13 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_13);              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; -            __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_12));              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -            __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_13);              PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)__pyx_t_12));              __Pyx_GIVEREF(((PyObject *)__pyx_t_12));              __pyx_t_12 = 0; -            __pyx_t_12 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_12 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_12);              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0; @@ -12110,16 +12533,16 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":78 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":80   *                     sent_num = sent_num + 1   *                 f.write("%d-%d " % self.unlink(link))   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     def write_binary(self, char* filename):   */ -          __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_36), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_38), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -12136,7 +12559,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":71 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -12145,11 +12568,11 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali   */          /*except:*/ {            __Pyx_AddTraceback("_sa.Alignment.write_text", __pyx_clineno, __pyx_lineno, __pyx_filename); -          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_12) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_12) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_1);            __Pyx_GOTREF(__pyx_t_4);            __Pyx_GOTREF(__pyx_t_12); -          __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_13);            __Pyx_INCREF(__pyx_t_1);            PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); @@ -12162,19 +12585,19 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali            __Pyx_GIVEREF(__pyx_t_12);            __pyx_t_14 = PyObject_Call(__pyx_t_3, __pyx_t_13, NULL);            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_14);            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14);            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -          if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_15 = (!__pyx_t_11); +          if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_15 = ((!(__pyx_t_11 != 0)) != 0);            if (__pyx_t_15) {              __Pyx_GIVEREF(__pyx_t_1);              __Pyx_GIVEREF(__pyx_t_4);              __Pyx_GIVEREF(__pyx_t_12);              __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_12);              __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_12 = 0;  -            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}              goto __pyx_L22;            }            __pyx_L22:; @@ -12200,13 +12623,13 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_37, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_39, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_15 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L23; @@ -12241,11 +12664,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_10write_text(struct __pyx_obj_3_sa_Ali  static PyObject *__pyx_pw_3_sa_9Alignment_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -12258,7 +12684,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_13write_binary(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":80 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":82   *             f.write("\n")   *    *     def write_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -12272,7 +12698,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_A    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":82 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":84   *     def write_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -12281,7 +12707,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_A   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":83 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":85   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.links.write_handle(f)             # <<<<<<<<<<<<<< @@ -12290,7 +12716,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_A   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->links->__pyx_vtab)->write_handle(__pyx_v_self->links, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":84 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":86   *         f = fopen(filename, "w")   *         self.links.write_handle(f)   *         self.sent_index.write_handle(f)             # <<<<<<<<<<<<<< @@ -12299,7 +12725,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_A   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sent_index->__pyx_vtab)->write_handle(__pyx_v_self->sent_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":85 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":87   *         self.links.write_handle(f)   *         self.sent_index.write_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -12318,11 +12744,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_12write_binary(struct __pyx_obj_3_sa_A  static PyObject *__pyx_pw_3_sa_9Alignment_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_9Alignment_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -12335,7 +12764,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_15write_enhanced(PyObject *__pyx_v_sel    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":87 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":89   *         fclose(f)   *    *     def write_enhanced(self, char* filename):             # <<<<<<<<<<<<<< @@ -12368,7 +12797,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_enhanced", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":88 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -12376,9 +12805,9 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa   *             for link in self.links:   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __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)); @@ -12386,14 +12815,14 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__w));      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__w));      __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __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; @@ -12408,7 +12837,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":89 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":91   *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:   *             sent_num = 1             # <<<<<<<<<<<<<< @@ -12417,7 +12846,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa   */            __pyx_v_sent_num = 1; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":90 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":92   *         with open(filename, "w") as f:   *             sent_num = 1   *             for link in self.links:             # <<<<<<<<<<<<<< @@ -12428,23 +12857,31 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa              __pyx_t_4 = ((PyObject *)__pyx_v_self->links); __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;              __pyx_t_9 = NULL;            } else { -            __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(((PyObject *)__pyx_v_self->links)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4);              __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext;            }            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_1 = __pyx_t_9(__pyx_t_4);                if (unlikely(!__pyx_t_1)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  }                  break;                } @@ -12454,23 +12891,23 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa              __pyx_v_link = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":91 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":93   *             sent_num = 1   *             for link in self.links:   *                 f.write("%d " % link)             # <<<<<<<<<<<<<<   *             f.write("\n")   *             for i in self.sent_index:   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_link); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_link); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -            __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10);              PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_2));              __Pyx_GIVEREF(((PyObject *)__pyx_t_2));              __pyx_t_2 = 0; -            __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; @@ -12478,21 +12915,21 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa            }            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":92 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":94   *             for link in self.links:   *                 f.write("%d " % link)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i in self.sent_index:   *                 f.write("%d " % i)   */ -          __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_38), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":93 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":95   *                 f.write("%d " % link)   *             f.write("\n")   *             for i in self.sent_index:             # <<<<<<<<<<<<<< @@ -12503,23 +12940,31 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa              __pyx_t_2 = ((PyObject *)__pyx_v_self->sent_index); __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;              __pyx_t_9 = NULL;            } else { -            __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self->sent_index)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self->sent_index)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2);              __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext;            }            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_4 = __pyx_t_9(__pyx_t_2);                if (unlikely(!__pyx_t_4)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                  else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                  }                  break;                } @@ -12529,23 +12974,23 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa              __pyx_v_i = __pyx_t_4;              __pyx_t_4 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":94 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":96   *             f.write("\n")   *             for i in self.sent_index:   *                 f.write("%d " % i)             # <<<<<<<<<<<<<<   *             f.write("\n")   *    */ -            __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4); -            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_10)); -            __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1);              PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_10));              __Pyx_GIVEREF(((PyObject *)__pyx_t_10));              __pyx_t_10 = 0; -            __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10);              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; @@ -12553,16 +12998,16 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa            }            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":95 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":97   *             for i in self.sent_index:   *                 f.write("%d " % i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     def alignment(self, i):   */ -          __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); -          __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_39), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_10 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_41), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_10);            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -12577,7 +13022,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":88 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -12586,11 +13031,11 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa   */          /*except:*/ {            __Pyx_AddTraceback("_sa.Alignment.write_enhanced", __pyx_clineno, __pyx_lineno, __pyx_filename); -          if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_10);            __Pyx_GOTREF(__pyx_t_2);            __Pyx_GOTREF(__pyx_t_1); -          __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_4);            __Pyx_INCREF(__pyx_t_10);            PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); @@ -12603,19 +13048,19 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa            __Pyx_GIVEREF(__pyx_t_1);            __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL);            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}            __Pyx_GOTREF(__pyx_t_12);            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12);            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -          if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_13 = (!__pyx_t_11); +          if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_13 = ((!(__pyx_t_11 != 0)) != 0);            if (__pyx_t_13) {              __Pyx_GIVEREF(__pyx_t_10);              __Pyx_GIVEREF(__pyx_t_2);              __Pyx_GIVEREF(__pyx_t_1);              __Pyx_ErrRestore(__pyx_t_10, __pyx_t_2, __pyx_t_1);              __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;  -            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +            {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}              goto __pyx_L22;            }            __pyx_L22:; @@ -12641,13 +13086,13 @@ static PyObject *__pyx_pf_3_sa_9Alignment_14write_enhanced(struct __pyx_obj_3_sa      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_40, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_42, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_13 < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L23; @@ -12687,7 +13132,7 @@ static PyObject *__pyx_pw_3_sa_9Alignment_17alignment(PyObject *__pyx_v_self, Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":97 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":99   *             f.write("\n")   *    *     def alignment(self, i):             # <<<<<<<<<<<<<< @@ -12713,42 +13158,42 @@ static PyObject *__pyx_pf_3_sa_9Alignment_16alignment(struct __pyx_obj_3_sa_Alig    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("alignment", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":100 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":102   *         """Return all (e,f) pairs for sentence i"""   *         cdef int j, start, end   *         result = []             # <<<<<<<<<<<<<<   *         start = self.sent_index.arr[i]   *         end = self.sent_index.arr[i+1]   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_result = __pyx_t_1; +  __pyx_v_result = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":101 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":103   *         cdef int j, start, end   *         result = []   *         start = self.sent_index.arr[i]             # <<<<<<<<<<<<<<   *         end = self.sent_index.arr[i+1]   *         for j from start <= j < end:   */ -  __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_start = (__pyx_v_self->sent_index->arr[__pyx_t_2]); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":102 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":104   *         result = []   *         start = self.sent_index.arr[i]   *         end = self.sent_index.arr[i+1]             # <<<<<<<<<<<<<<   *         for j from start <= j < end:   *             result.append(self.unlink(self.links.arr[j]))   */ -  __pyx_t_1 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_end = (__pyx_v_self->sent_index->arr[__pyx_t_2]); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":103 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":105   *         start = self.sent_index.arr[i]   *         end = self.sent_index.arr[i+1]   *         for j from start <= j < end:             # <<<<<<<<<<<<<< @@ -12758,30 +13203,30 @@ static PyObject *__pyx_pf_3_sa_9Alignment_16alignment(struct __pyx_obj_3_sa_Alig    __pyx_t_3 = __pyx_v_end;    for (__pyx_v_j = __pyx_v_start; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":104 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":106   *         end = self.sent_index.arr[i+1]   *         for j from start <= j < end:   *             result.append(self.unlink(self.links.arr[j]))             # <<<<<<<<<<<<<<   *         return result   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__unlink); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_4 = PyInt_FromLong((__pyx_v_self->links->arr[__pyx_v_j])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong((__pyx_v_self->links->arr[__pyx_v_j])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __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 = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);      __Pyx_GIVEREF(__pyx_t_4);      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; -    __pyx_t_6 = PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":105 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":107   *         for j from start <= j < end:   *             result.append(self.unlink(self.links.arr[j]))   *         return result             # <<<<<<<<<<<<<< @@ -12806,7 +13251,7 @@ static PyObject *__pyx_pf_3_sa_9Alignment_16alignment(struct __pyx_obj_3_sa_Alig    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":15 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":15   *     int val   *    * cdef _node* new_node(int key):             # <<<<<<<<<<<<<< @@ -12820,7 +13265,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("new_node", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":17   * cdef _node* new_node(int key):   *     cdef _node* n   *     n = <_node*> malloc(sizeof(_node))             # <<<<<<<<<<<<<< @@ -12829,7 +13274,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {   */    __pyx_v_n = ((struct __pyx_t_3_sa__node *)malloc((sizeof(struct __pyx_t_3_sa__node)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":18   *     cdef _node* n   *     n = <_node*> malloc(sizeof(_node))   *     n.smaller = NULL             # <<<<<<<<<<<<<< @@ -12838,7 +13283,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {   */    __pyx_v_n->smaller = NULL; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":19 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":19   *     n = <_node*> malloc(sizeof(_node))   *     n.smaller = NULL   *     n.bigger = NULL             # <<<<<<<<<<<<<< @@ -12847,7 +13292,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {   */    __pyx_v_n->bigger = NULL; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":20 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":20   *     n.smaller = NULL   *     n.bigger = NULL   *     n.key = key             # <<<<<<<<<<<<<< @@ -12856,7 +13301,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {   */    __pyx_v_n->key = __pyx_v_key; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":21   *     n.bigger = NULL   *     n.key = key   *     n.val = 0             # <<<<<<<<<<<<<< @@ -12865,7 +13310,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {   */    __pyx_v_n->val = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":22   *     n.key = key   *     n.val = 0   *     return n             # <<<<<<<<<<<<<< @@ -12881,7 +13326,7 @@ static struct __pyx_t_3_sa__node *__pyx_f_3_sa_new_node(int __pyx_v_key) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":25 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":25   *    *    * cdef del_node(_node* n):             # <<<<<<<<<<<<<< @@ -12899,17 +13344,17 @@ static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *__pyx_v_n) {    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("del_node", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":26 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":26   *    * cdef del_node(_node* n):   *     if n.smaller != NULL:             # <<<<<<<<<<<<<<   *         del_node(n.smaller)   *     if n.bigger != NULL:   */ -  __pyx_t_1 = (__pyx_v_n->smaller != NULL); +  __pyx_t_1 = ((__pyx_v_n->smaller != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":27 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":27   * cdef del_node(_node* n):   *     if n.smaller != NULL:   *         del_node(n.smaller)             # <<<<<<<<<<<<<< @@ -12923,17 +13368,17 @@ static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *__pyx_v_n) {    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":28 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":28   *     if n.smaller != NULL:   *         del_node(n.smaller)   *     if n.bigger != NULL:             # <<<<<<<<<<<<<<   *         del_node(n.bigger)   *     free(n)   */ -  __pyx_t_1 = (__pyx_v_n->bigger != NULL); +  __pyx_t_1 = ((__pyx_v_n->bigger != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":29 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":29   *         del_node(n.smaller)   *     if n.bigger != NULL:   *         del_node(n.bigger)             # <<<<<<<<<<<<<< @@ -12947,7 +13392,7 @@ static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *__pyx_v_n) {    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":30   *     if n.bigger != NULL:   *         del_node(n.bigger)   *     free(n)             # <<<<<<<<<<<<<< @@ -12968,7 +13413,7 @@ static PyObject *__pyx_f_3_sa_del_node(struct __pyx_t_3_sa__node *__pyx_v_n) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":32 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":32   *     free(n)   *    * cdef int* get_val(_node* n, int key):             # <<<<<<<<<<<<<< @@ -12982,17 +13427,17 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx    int __pyx_t_1;    __Pyx_RefNannySetupContext("get_val", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":33   *    * cdef int* get_val(_node* n, int key):   *     if key == n.key:             # <<<<<<<<<<<<<<   *         return &n.val   *     elif key < n.key:   */ -  __pyx_t_1 = (__pyx_v_key == __pyx_v_n->key); +  __pyx_t_1 = ((__pyx_v_key == __pyx_v_n->key) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":34 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":34   * cdef int* get_val(_node* n, int key):   *     if key == n.key:   *         return &n.val             # <<<<<<<<<<<<<< @@ -13004,27 +13449,27 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":35 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":35   *     if key == n.key:   *         return &n.val   *     elif key < n.key:             # <<<<<<<<<<<<<<   *         if n.smaller == NULL:   *             n.smaller = new_node(key)   */ -  __pyx_t_1 = (__pyx_v_key < __pyx_v_n->key); +  __pyx_t_1 = ((__pyx_v_key < __pyx_v_n->key) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":36 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":36   *         return &n.val   *     elif key < n.key:   *         if n.smaller == NULL:             # <<<<<<<<<<<<<<   *             n.smaller = new_node(key)   *             return &(n.smaller.val)   */ -    __pyx_t_1 = (__pyx_v_n->smaller == NULL); +    __pyx_t_1 = ((__pyx_v_n->smaller == NULL) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":37 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":37   *     elif key < n.key:   *         if n.smaller == NULL:   *             n.smaller = new_node(key)             # <<<<<<<<<<<<<< @@ -13033,7 +13478,7 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx   */        __pyx_v_n->smaller = __pyx_f_3_sa_new_node(__pyx_v_key); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":38 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":38   *         if n.smaller == NULL:   *             n.smaller = new_node(key)   *             return &(n.smaller.val)             # <<<<<<<<<<<<<< @@ -13046,7 +13491,7 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":39 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":39   *             n.smaller = new_node(key)   *             return &(n.smaller.val)   *         return get_val(n.smaller, key)             # <<<<<<<<<<<<<< @@ -13059,17 +13504,17 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":41 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":41   *         return get_val(n.smaller, key)   *     else:   *         if n.bigger == NULL:             # <<<<<<<<<<<<<<   *             n.bigger = new_node(key)   *             return &(n.bigger.val)   */ -    __pyx_t_1 = (__pyx_v_n->bigger == NULL); +    __pyx_t_1 = ((__pyx_v_n->bigger == NULL) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":42 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":42   *     else:   *         if n.bigger == NULL:   *             n.bigger = new_node(key)             # <<<<<<<<<<<<<< @@ -13078,7 +13523,7 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx   */        __pyx_v_n->bigger = __pyx_f_3_sa_new_node(__pyx_v_key); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":43 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":43   *         if n.bigger == NULL:   *             n.bigger = new_node(key)   *             return &(n.bigger.val)             # <<<<<<<<<<<<<< @@ -13091,7 +13536,7 @@ static int *__pyx_f_3_sa_get_val(struct __pyx_t_3_sa__node *__pyx_v_n, int __pyx      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":44 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":44   *             n.bigger = new_node(key)   *             return &(n.bigger.val)   *         return get_val(n.bigger, key)             # <<<<<<<<<<<<<< @@ -13118,14 +13563,17 @@ static int __pyx_pw_3_sa_5BiLex_1__cinit__(PyObject *__pyx_v_self, PyObject *__p    PyObject *__pyx_v_earray = 0;    PyObject *__pyx_v_fsarray = 0;    PyObject *__pyx_v_alignment = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_text,&__pyx_n_s__from_data,&__pyx_n_s__from_binary,&__pyx_n_s__earray,&__pyx_n_s__fsarray,&__pyx_n_s__alignment,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_text,&__pyx_n_s__from_data,&__pyx_n_s__from_binary,&__pyx_n_s__earray,&__pyx_n_s__fsarray,&__pyx_n_s__alignment,0};      PyObject* values[6] = {0,0,0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":54 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54   *     cdef id2eword, id2fword, eword2id, fword2id   *    *     def __cinit__(self, from_text=None, from_data=False, from_binary=None,             # <<<<<<<<<<<<<< @@ -13133,10 +13581,10 @@ static int __pyx_pw_3_sa_5BiLex_1__cinit__(PyObject *__pyx_v_self, PyObject *__p   *         self.id2eword = []   */      values[0] = ((PyObject *)Py_None); -    values[1] = __pyx_k_41; +    values[1] = __pyx_k_43;      values[2] = ((PyObject *)Py_None); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":55 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":55   *    *     def __cinit__(self, from_text=None, from_data=False, from_binary=None,   *             earray=None, fsarray=None, alignment=None):             # <<<<<<<<<<<<<< @@ -13227,7 +13675,7 @@ static int __pyx_pw_3_sa_5BiLex_1__cinit__(PyObject *__pyx_v_self, PyObject *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":54 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54   *     cdef id2eword, id2fword, eword2id, fword2id   *    *     def __cinit__(self, from_text=None, from_data=False, from_binary=None,             # <<<<<<<<<<<<<< @@ -13242,13 +13690,12 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    int __pyx_t_2;    PyObject *__pyx_t_3 = NULL;    PyObject *__pyx_t_4 = NULL; -  PyObject *__pyx_t_5 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":56 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":56   *     def __cinit__(self, from_text=None, from_data=False, from_binary=None,   *             earray=None, fsarray=None, alignment=None):   *         self.id2eword = []             # <<<<<<<<<<<<<< @@ -13263,7 +13710,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->id2eword = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":57   *             earray=None, fsarray=None, alignment=None):   *         self.id2eword = []   *         self.id2fword = []             # <<<<<<<<<<<<<< @@ -13278,7 +13725,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->id2fword = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":58 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":58   *         self.id2eword = []   *         self.id2fword = []   *         self.eword2id = {}             # <<<<<<<<<<<<<< @@ -13293,7 +13740,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->eword2id = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":59   *         self.id2fword = []   *         self.eword2id = {}   *         self.fword2id = {}             # <<<<<<<<<<<<<< @@ -13308,7 +13755,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->fword2id = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":60 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":60   *         self.eword2id = {}   *         self.fword2id = {}   *         self.e_index = IntList()             # <<<<<<<<<<<<<< @@ -13323,7 +13770,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":61 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":61   *         self.fword2id = {}   *         self.e_index = IntList()   *         self.f_index = IntList()             # <<<<<<<<<<<<<< @@ -13338,7 +13785,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":62 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":62   *         self.e_index = IntList()   *         self.f_index = IntList()   *         self.col1 = FloatList()             # <<<<<<<<<<<<<< @@ -13353,7 +13800,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":63 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":63   *         self.f_index = IntList()   *         self.col1 = FloatList()   *         self.col2 = FloatList()             # <<<<<<<<<<<<<< @@ -13368,7 +13815,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":64 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":64   *         self.col1 = FloatList()   *         self.col2 = FloatList()   *         if from_binary:             # <<<<<<<<<<<<<< @@ -13378,14 +13825,14 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":65 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":65   *         self.col2 = FloatList()   *         if from_binary:   *             self.read_binary(from_binary)             # <<<<<<<<<<<<<<   *         elif from_data:   *             self.compute_from_data(fsarray, earray, alignment)   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 65; __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[5]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -13400,7 +13847,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":66   *         if from_binary:   *             self.read_binary(from_binary)   *         elif from_data:             # <<<<<<<<<<<<<< @@ -13410,7 +13857,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_data); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":67 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":67   *             self.read_binary(from_binary)   *         elif from_data:   *             self.compute_from_data(fsarray, earray, alignment)             # <<<<<<<<<<<<<< @@ -13418,43 +13865,34 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   *             self.read_text(from_text)   */      if (!(likely(((__pyx_v_fsarray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fsarray, __pyx_ptype_3_sa_SuffixArray))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = __pyx_v_fsarray; -    __Pyx_INCREF(__pyx_t_4);      if (!(likely(((__pyx_v_earray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_earray, __pyx_ptype_3_sa_DataArray))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_3 = __pyx_v_earray; -    __Pyx_INCREF(__pyx_t_3);      if (!(likely(((__pyx_v_alignment) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_alignment, __pyx_ptype_3_sa_Alignment))))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_1 = __pyx_v_alignment; -    __Pyx_INCREF(__pyx_t_1); -    __pyx_t_5 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->compute_from_data(__pyx_v_self, ((struct __pyx_obj_3_sa_SuffixArray *)__pyx_t_4), ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_3), ((struct __pyx_obj_3_sa_Alignment *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_5); +    __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->compute_from_data(__pyx_v_self, ((struct __pyx_obj_3_sa_SuffixArray *)__pyx_v_fsarray), ((struct __pyx_obj_3_sa_DataArray *)__pyx_v_earray), ((struct __pyx_obj_3_sa_Alignment *)__pyx_v_alignment)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 67; __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_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      goto __pyx_L3;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":69 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":69   *             self.compute_from_data(fsarray, earray, alignment)   *         else:   *             self.read_text(from_text)             # <<<<<<<<<<<<<<   *    *    */ -    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __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[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_from_text); -    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_from_text); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_from_text);      __Pyx_GIVEREF(__pyx_v_from_text); -    __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    }    __pyx_L3:; @@ -13464,7 +13902,6 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    __Pyx_XDECREF(__pyx_t_1);    __Pyx_XDECREF(__pyx_t_3);    __Pyx_XDECREF(__pyx_t_4); -  __Pyx_XDECREF(__pyx_t_5);    __Pyx_AddTraceback("_sa.BiLex.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = -1;    __pyx_L0:; @@ -13472,7 +13909,7 @@ static int __pyx_pf_3_sa_5BiLex___cinit__(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":72 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":72   *    *    *     cdef compute_from_data(self, SuffixArray fsa, DataArray eda, Alignment aa):             # <<<<<<<<<<<<<< @@ -13526,7 +13963,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("compute_from_data", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":79 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":79   *         cdef int null_word   *    *         null_word = 0             # <<<<<<<<<<<<<< @@ -13535,7 +13972,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_null_word = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":80 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":80   *    *         null_word = 0   *         for word in fsa.darray.id2word: # I miss list comprehensions             # <<<<<<<<<<<<<< @@ -13553,10 +13990,18 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -13572,7 +14017,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":81 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":81   *         null_word = 0   *         for word in fsa.darray.id2word: # I miss list comprehensions   *             self.id2fword.append(word)             # <<<<<<<<<<<<<< @@ -13585,16 +14030,16 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":82 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":82   *         for word in fsa.darray.id2word: # I miss list comprehensions   *             self.id2fword.append(word)   *         self.id2fword[null_word] = "NULL"             # <<<<<<<<<<<<<<   *         for id, word in enumerate(self.id2fword):   *             self.fword2id[word] = id   */ -  if (__Pyx_SetItemInt(__pyx_v_self->id2fword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetItemInt(__pyx_v_self->id2fword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":83 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":83   *             self.id2fword.append(word)   *         self.id2fword[null_word] = "NULL"   *         for id, word in enumerate(self.id2fword):             # <<<<<<<<<<<<<< @@ -13614,10 +14059,18 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_5 = __pyx_t_3(__pyx_t_4);        if (unlikely(!__pyx_t_5)) { @@ -13641,7 +14094,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_t_1 = __pyx_t_5;      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":84 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":84   *         self.id2fword[null_word] = "NULL"   *         for id, word in enumerate(self.id2fword):   *             self.fword2id[word] = id             # <<<<<<<<<<<<<< @@ -13653,7 +14106,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":86 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":86   *             self.fword2id[word] = id   *    *         for word in eda.id2word:             # <<<<<<<<<<<<<< @@ -13671,10 +14124,18 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -13690,7 +14151,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":87 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":87   *    *         for word in eda.id2word:   *             self.id2eword.append(word)             # <<<<<<<<<<<<<< @@ -13703,16 +14164,16 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":88 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":88   *         for word in eda.id2word:   *             self.id2eword.append(word)   *         self.id2eword[null_word] = "NULL"             # <<<<<<<<<<<<<<   *         for id, word in enumerate(self.id2eword):   *             self.eword2id[word] = id   */ -  if (__Pyx_SetItemInt(__pyx_v_self->id2eword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetItemInt(__pyx_v_self->id2eword, __pyx_v_null_word, ((PyObject *)__pyx_n_s__NULL), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":89 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":89   *             self.id2eword.append(word)   *         self.id2eword[null_word] = "NULL"   *         for id, word in enumerate(self.id2eword):             # <<<<<<<<<<<<<< @@ -13732,10 +14193,18 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_4)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_5 = __pyx_t_3(__pyx_t_4);        if (unlikely(!__pyx_t_5)) { @@ -13759,7 +14228,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_t_1 = __pyx_t_5;      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":90 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":90   *         self.id2eword[null_word] = "NULL"   *         for id, word in enumerate(self.id2eword):   *             self.eword2id[word] = id             # <<<<<<<<<<<<<< @@ -13771,7 +14240,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":92 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":92   *             self.eword2id[word] = id   *    *         num_pairs = 0             # <<<<<<<<<<<<<< @@ -13780,7 +14249,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_num_pairs = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":94 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":94   *         num_pairs = 0   *    *         V_E = len(eda.id2word)             # <<<<<<<<<<<<<< @@ -13793,7 +14262,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_V_E = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":95 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":95   *    *         V_E = len(eda.id2word)   *         V_F = len(fsa.darray.id2word)             # <<<<<<<<<<<<<< @@ -13806,7 +14275,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_V_F = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":96 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":96   *         V_E = len(eda.id2word)   *         V_F = len(fsa.darray.id2word)   *         fmargin = <int*> malloc(V_F*sizeof(int))             # <<<<<<<<<<<<<< @@ -13815,7 +14284,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_fmargin = ((int *)malloc((__pyx_v_V_F * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":97 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":97   *         V_F = len(fsa.darray.id2word)   *         fmargin = <int*> malloc(V_F*sizeof(int))   *         emargin = <int*> malloc(V_E*sizeof(int))             # <<<<<<<<<<<<<< @@ -13824,7 +14293,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_emargin = ((int *)malloc((__pyx_v_V_E * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":98 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":98   *         fmargin = <int*> malloc(V_F*sizeof(int))   *         emargin = <int*> malloc(V_E*sizeof(int))   *         memset(fmargin, 0, V_F*sizeof(int))             # <<<<<<<<<<<<<< @@ -13833,7 +14302,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    memset(__pyx_v_fmargin, 0, (__pyx_v_V_F * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":99 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":99   *         emargin = <int*> malloc(V_E*sizeof(int))   *         memset(fmargin, 0, V_F*sizeof(int))   *         memset(emargin, 0, V_E*sizeof(int))             # <<<<<<<<<<<<<< @@ -13842,7 +14311,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    memset(__pyx_v_emargin, 0, (__pyx_v_V_E * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":101 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":101   *         memset(emargin, 0, V_E*sizeof(int))   *    *         dict = <_node**> malloc(V_F*sizeof(_node*))             # <<<<<<<<<<<<<< @@ -13851,7 +14320,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_dict = ((struct __pyx_t_3_sa__node **)malloc((__pyx_v_V_F * (sizeof(struct __pyx_t_3_sa__node *))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":102 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":102   *    *         dict = <_node**> malloc(V_F*sizeof(_node*))   *         memset(dict, 0, V_F*sizeof(_node*))             # <<<<<<<<<<<<<< @@ -13860,7 +14329,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    memset(__pyx_v_dict, 0, (__pyx_v_V_F * (sizeof(struct __pyx_t_3_sa__node *)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":104 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":104   *         memset(dict, 0, V_F*sizeof(_node*))   *    *         num_sents = len(fsa.darray.sent_index)             # <<<<<<<<<<<<<< @@ -13876,7 +14345,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_v_num_sents = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":105 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":105   *    *         num_sents = len(fsa.darray.sent_index)   *         for sent_id from 0 <= sent_id < num_sents-1:             # <<<<<<<<<<<<<< @@ -13889,7 +14358,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    for (__pyx_v_sent_id = 0; __pyx_v_sent_id < __pyx_t_6; __pyx_v_sent_id++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":107 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":107   *         for sent_id from 0 <= sent_id < num_sents-1:   *    *             fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]             # <<<<<<<<<<<<<< @@ -13898,7 +14367,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_fsent = (__pyx_v_fsa->darray->data->arr + (__pyx_v_fsa->darray->sent_index->arr[__pyx_v_sent_id])); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":108 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":108   *    *             fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]   *             I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1             # <<<<<<<<<<<<<< @@ -13907,7 +14376,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_I = (((__pyx_v_fsa->darray->sent_index->arr[(__pyx_v_sent_id + 1)]) - (__pyx_v_fsa->darray->sent_index->arr[__pyx_v_sent_id])) - 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":109 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":109   *             fsent = fsa.darray.data.arr + fsa.darray.sent_index.arr[sent_id]   *             I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1   *             faligned = <int*> malloc(I*sizeof(int))             # <<<<<<<<<<<<<< @@ -13916,7 +14385,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_faligned = ((int *)malloc((__pyx_v_I * (sizeof(int))))); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":110 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":110   *             I = fsa.darray.sent_index.arr[sent_id+1] - fsa.darray.sent_index.arr[sent_id] - 1   *             faligned = <int*> malloc(I*sizeof(int))   *             memset(faligned, 0, I*sizeof(int))             # <<<<<<<<<<<<<< @@ -13925,7 +14394,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      memset(__pyx_v_faligned, 0, (__pyx_v_I * (sizeof(int)))); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":112 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":112   *             memset(faligned, 0, I*sizeof(int))   *    *             esent = eda.data.arr + eda.sent_index.arr[sent_id]             # <<<<<<<<<<<<<< @@ -13934,7 +14403,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_esent = (__pyx_v_eda->data->arr + (__pyx_v_eda->sent_index->arr[__pyx_v_sent_id])); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":113 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":113   *    *             esent = eda.data.arr + eda.sent_index.arr[sent_id]   *             J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1             # <<<<<<<<<<<<<< @@ -13943,7 +14412,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_J = (((__pyx_v_eda->sent_index->arr[(__pyx_v_sent_id + 1)]) - (__pyx_v_eda->sent_index->arr[__pyx_v_sent_id])) - 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":114 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":114   *             esent = eda.data.arr + eda.sent_index.arr[sent_id]   *             J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1   *             ealigned = <int*> malloc(J*sizeof(int))             # <<<<<<<<<<<<<< @@ -13952,7 +14421,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_ealigned = ((int *)malloc((__pyx_v_J * (sizeof(int))))); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":115 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":115   *             J = eda.sent_index.arr[sent_id+1] - eda.sent_index.arr[sent_id] - 1   *             ealigned = <int*> malloc(J*sizeof(int))   *             memset(ealigned, 0, J*sizeof(int))             # <<<<<<<<<<<<<< @@ -13961,7 +14430,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      memset(__pyx_v_ealigned, 0, (__pyx_v_J * (sizeof(int)))); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":117 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":117   *             memset(ealigned, 0, J*sizeof(int))   *    *             links = aa._get_sent_links(sent_id, &num_links)             # <<<<<<<<<<<<<< @@ -13970,7 +14439,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      __pyx_v_links = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_aa->__pyx_vtab)->_get_sent_links(__pyx_v_aa, __pyx_v_sent_id, (&__pyx_v_num_links)); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":119 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":119   *             links = aa._get_sent_links(sent_id, &num_links)   *    *             for l from 0 <= l < num_links:             # <<<<<<<<<<<<<< @@ -13980,7 +14449,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_t_7 = __pyx_v_num_links;      for (__pyx_v_l = 0; __pyx_v_l < __pyx_t_7; __pyx_v_l++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":120 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":120   *    *             for l from 0 <= l < num_links:   *                 i = links[l*2]             # <<<<<<<<<<<<<< @@ -13989,7 +14458,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        __pyx_v_i = (__pyx_v_links[(__pyx_v_l * 2)]); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":121 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":121   *             for l from 0 <= l < num_links:   *                 i = links[l*2]   *                 j = links[l*2+1]             # <<<<<<<<<<<<<< @@ -13998,23 +14467,23 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        __pyx_v_j = (__pyx_v_links[((__pyx_v_l * 2) + 1)]); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":122 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":122   *                 i = links[l*2]   *                 j = links[l*2+1]   *                 if i >= I or j >= J:             # <<<<<<<<<<<<<<   *                     raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))   *                 f_i = fsent[i]   */ -      __pyx_t_8 = (__pyx_v_i >= __pyx_v_I); +      __pyx_t_8 = ((__pyx_v_i >= __pyx_v_I) != 0);        if (!__pyx_t_8) { -        __pyx_t_9 = (__pyx_v_j >= __pyx_v_J); +        __pyx_t_9 = ((__pyx_v_j >= __pyx_v_J) != 0);          __pyx_t_10 = __pyx_t_9;        } else {          __pyx_t_10 = __pyx_t_8;        }        if (__pyx_t_10) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":123 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":123   *                 j = links[l*2+1]   *                 if i >= I or j >= J:   *                     raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))             # <<<<<<<<<<<<<< @@ -14048,7 +14517,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL          __pyx_t_5 = 0;          __pyx_t_11 = 0;          __pyx_t_12 = 0; -        __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_42), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_44), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(((PyObject *)__pyx_t_12));          __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;          __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -14066,7 +14535,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        }        __pyx_L15:; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":124 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":124   *                 if i >= I or j >= J:   *                     raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))   *                 f_i = fsent[i]             # <<<<<<<<<<<<<< @@ -14075,7 +14544,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        __pyx_v_f_i = (__pyx_v_fsent[__pyx_v_i]); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":125 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":125   *                     raise Exception("%d-%d out of bounds (I=%d,J=%d) in line %d\n" % (i,j,I,J,sent_id+1))   *                 f_i = fsent[i]   *                 e_j = esent[j]             # <<<<<<<<<<<<<< @@ -14084,7 +14553,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        __pyx_v_e_j = (__pyx_v_esent[__pyx_v_j]); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":126 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":126   *                 f_i = fsent[i]   *                 e_j = esent[j]   *                 fmargin[f_i] = fmargin[f_i]+1             # <<<<<<<<<<<<<< @@ -14093,7 +14562,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        (__pyx_v_fmargin[__pyx_v_f_i]) = ((__pyx_v_fmargin[__pyx_v_f_i]) + 1); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":127 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":127   *                 e_j = esent[j]   *                 fmargin[f_i] = fmargin[f_i]+1   *                 emargin[e_j] = emargin[e_j]+1             # <<<<<<<<<<<<<< @@ -14102,17 +14571,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        (__pyx_v_emargin[__pyx_v_e_j]) = ((__pyx_v_emargin[__pyx_v_e_j]) + 1); -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":128 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":128   *                 fmargin[f_i] = fmargin[f_i]+1   *                 emargin[e_j] = emargin[e_j]+1   *                 if dict[f_i] == NULL:             # <<<<<<<<<<<<<<   *                     dict[f_i] = new_node(e_j)   *                     dict[f_i].val = 1   */ -      __pyx_t_10 = ((__pyx_v_dict[__pyx_v_f_i]) == NULL); +      __pyx_t_10 = (((__pyx_v_dict[__pyx_v_f_i]) == NULL) != 0);        if (__pyx_t_10) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":129 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":129   *                 emargin[e_j] = emargin[e_j]+1   *                 if dict[f_i] == NULL:   *                     dict[f_i] = new_node(e_j)             # <<<<<<<<<<<<<< @@ -14121,7 +14590,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_dict[__pyx_v_f_i]) = __pyx_f_3_sa_new_node(__pyx_v_e_j); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":130 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":130   *                 if dict[f_i] == NULL:   *                     dict[f_i] = new_node(e_j)   *                     dict[f_i].val = 1             # <<<<<<<<<<<<<< @@ -14130,7 +14599,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_dict[__pyx_v_f_i])->val = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":131 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":131   *                     dict[f_i] = new_node(e_j)   *                     dict[f_i].val = 1   *                     num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14142,7 +14611,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":133 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":133   *                     num_pairs = num_pairs + 1   *                 else:   *                     count = get_val(dict[f_i], e_j)             # <<<<<<<<<<<<<< @@ -14151,17 +14620,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_f_i]), __pyx_v_e_j); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":134 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":134   *                 else:   *                     count = get_val(dict[f_i], e_j)   *                     if count[0] == 0:             # <<<<<<<<<<<<<<   *                         num_pairs = num_pairs + 1   *                     count[0] = count[0] + 1   */ -        __pyx_t_10 = ((__pyx_v_count[0]) == 0); +        __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);          if (__pyx_t_10) { -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":135 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":135   *                     count = get_val(dict[f_i], e_j)   *                     if count[0] == 0:   *                         num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14173,7 +14642,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL          }          __pyx_L17:; -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":136 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":136   *                     if count[0] == 0:   *                         num_pairs = num_pairs + 1   *                     count[0] = count[0] + 1             # <<<<<<<<<<<<<< @@ -14184,7 +14653,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        }        __pyx_L16:; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":138 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":138   *                     count[0] = count[0] + 1   *                 # add count   *                 faligned[i] = 1             # <<<<<<<<<<<<<< @@ -14193,7 +14662,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */        (__pyx_v_faligned[__pyx_v_i]) = 1; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":139 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":139   *                 # add count   *                 faligned[i] = 1   *                 ealigned[j] = 1             # <<<<<<<<<<<<<< @@ -14203,7 +14672,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        (__pyx_v_ealigned[__pyx_v_j]) = 1;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":140 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":140   *                 faligned[i] = 1   *                 ealigned[j] = 1   *             for i from 0 <= i < I:             # <<<<<<<<<<<<<< @@ -14213,17 +14682,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_t_7 = __pyx_v_I;      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":141 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":141   *                 ealigned[j] = 1   *             for i from 0 <= i < I:   *                 if faligned[i] == 0:             # <<<<<<<<<<<<<<   *                     f_i = fsent[i]   *                     fmargin[f_i] = fmargin[f_i] + 1   */ -      __pyx_t_10 = ((__pyx_v_faligned[__pyx_v_i]) == 0); +      __pyx_t_10 = (((__pyx_v_faligned[__pyx_v_i]) == 0) != 0);        if (__pyx_t_10) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":142 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":142   *             for i from 0 <= i < I:   *                 if faligned[i] == 0:   *                     f_i = fsent[i]             # <<<<<<<<<<<<<< @@ -14232,7 +14701,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          __pyx_v_f_i = (__pyx_v_fsent[__pyx_v_i]); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":143 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":143   *                 if faligned[i] == 0:   *                     f_i = fsent[i]   *                     fmargin[f_i] = fmargin[f_i] + 1             # <<<<<<<<<<<<<< @@ -14241,7 +14710,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_fmargin[__pyx_v_f_i]) = ((__pyx_v_fmargin[__pyx_v_f_i]) + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":144 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":144   *                     f_i = fsent[i]   *                     fmargin[f_i] = fmargin[f_i] + 1   *                     emargin[null_word] = emargin[null_word] + 1             # <<<<<<<<<<<<<< @@ -14250,17 +14719,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_emargin[__pyx_v_null_word]) = ((__pyx_v_emargin[__pyx_v_null_word]) + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":145 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":145   *                     fmargin[f_i] = fmargin[f_i] + 1   *                     emargin[null_word] = emargin[null_word] + 1   *                     if dict[f_i] == NULL:             # <<<<<<<<<<<<<<   *                         dict[f_i] = new_node(null_word)   *                         dict[f_i].val = 1   */ -        __pyx_t_10 = ((__pyx_v_dict[__pyx_v_f_i]) == NULL); +        __pyx_t_10 = (((__pyx_v_dict[__pyx_v_f_i]) == NULL) != 0);          if (__pyx_t_10) { -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":146 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":146   *                     emargin[null_word] = emargin[null_word] + 1   *                     if dict[f_i] == NULL:   *                         dict[f_i] = new_node(null_word)             # <<<<<<<<<<<<<< @@ -14269,7 +14738,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            (__pyx_v_dict[__pyx_v_f_i]) = __pyx_f_3_sa_new_node(__pyx_v_null_word); -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":147 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":147   *                     if dict[f_i] == NULL:   *                         dict[f_i] = new_node(null_word)   *                         dict[f_i].val = 1             # <<<<<<<<<<<<<< @@ -14278,7 +14747,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            (__pyx_v_dict[__pyx_v_f_i])->val = 1; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":148 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":148   *                         dict[f_i] = new_node(null_word)   *                         dict[f_i].val = 1   *                         num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14290,7 +14759,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":150 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":150   *                         num_pairs = num_pairs + 1   *                     else:   *                         count = get_val(dict[f_i], null_word)             # <<<<<<<<<<<<<< @@ -14299,17 +14768,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_f_i]), __pyx_v_null_word); -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":151 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":151   *                     else:   *                         count = get_val(dict[f_i], null_word)   *                         if count[0] == 0:             # <<<<<<<<<<<<<<   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1   */ -          __pyx_t_10 = ((__pyx_v_count[0]) == 0); +          __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);            if (__pyx_t_10) { -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":152 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":152   *                         count = get_val(dict[f_i], null_word)   *                         if count[0] == 0:   *                             num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14321,7 +14790,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL            }            __pyx_L22:; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":153 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":153   *                         if count[0] == 0:   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1             # <<<<<<<<<<<<<< @@ -14336,7 +14805,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        __pyx_L20:;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":154 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":154   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1   *             for j from 0 <= j < J:             # <<<<<<<<<<<<<< @@ -14346,17 +14815,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_t_7 = __pyx_v_J;      for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_7; __pyx_v_j++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":155 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":155   *                         count[0] = count[0] + 1   *             for j from 0 <= j < J:   *                 if ealigned[j] == 0:             # <<<<<<<<<<<<<<   *                     e_j = esent[j]   *                     fmargin[null_word] = fmargin[null_word] + 1   */ -      __pyx_t_10 = ((__pyx_v_ealigned[__pyx_v_j]) == 0); +      __pyx_t_10 = (((__pyx_v_ealigned[__pyx_v_j]) == 0) != 0);        if (__pyx_t_10) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":156 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":156   *             for j from 0 <= j < J:   *                 if ealigned[j] == 0:   *                     e_j = esent[j]             # <<<<<<<<<<<<<< @@ -14365,7 +14834,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          __pyx_v_e_j = (__pyx_v_esent[__pyx_v_j]); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":157 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":157   *                 if ealigned[j] == 0:   *                     e_j = esent[j]   *                     fmargin[null_word] = fmargin[null_word] + 1             # <<<<<<<<<<<<<< @@ -14374,7 +14843,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_fmargin[__pyx_v_null_word]) = ((__pyx_v_fmargin[__pyx_v_null_word]) + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":158 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":158   *                     e_j = esent[j]   *                     fmargin[null_word] = fmargin[null_word] + 1   *                     emargin[e_j] = emargin[e_j] + 1             # <<<<<<<<<<<<<< @@ -14383,17 +14852,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */          (__pyx_v_emargin[__pyx_v_e_j]) = ((__pyx_v_emargin[__pyx_v_e_j]) + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":159 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":159   *                     fmargin[null_word] = fmargin[null_word] + 1   *                     emargin[e_j] = emargin[e_j] + 1   *                     if dict[null_word] == NULL:             # <<<<<<<<<<<<<<   *                         dict[null_word] = new_node(e_j)   *                         dict[null_word].val = 1   */ -        __pyx_t_10 = ((__pyx_v_dict[__pyx_v_null_word]) == NULL); +        __pyx_t_10 = (((__pyx_v_dict[__pyx_v_null_word]) == NULL) != 0);          if (__pyx_t_10) { -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":160 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":160   *                     emargin[e_j] = emargin[e_j] + 1   *                     if dict[null_word] == NULL:   *                         dict[null_word] = new_node(e_j)             # <<<<<<<<<<<<<< @@ -14402,7 +14871,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            (__pyx_v_dict[__pyx_v_null_word]) = __pyx_f_3_sa_new_node(__pyx_v_e_j); -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":161 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":161   *                     if dict[null_word] == NULL:   *                         dict[null_word] = new_node(e_j)   *                         dict[null_word].val = 1             # <<<<<<<<<<<<<< @@ -14411,7 +14880,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            (__pyx_v_dict[__pyx_v_null_word])->val = 1; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":162 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":162   *                         dict[null_word] = new_node(e_j)   *                         dict[null_word].val = 1   *                         num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14423,7 +14892,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":164 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":164   *                         num_pairs = num_pairs + 1   *                     else:   *                         count = get_val(dict[null_word], e_j)             # <<<<<<<<<<<<<< @@ -14432,17 +14901,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */            __pyx_v_count = __pyx_f_3_sa_get_val((__pyx_v_dict[__pyx_v_null_word]), __pyx_v_e_j); -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":165 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":165   *                     else:   *                         count = get_val(dict[null_word], e_j)   *                         if count[0] == 0:             # <<<<<<<<<<<<<<   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1   */ -          __pyx_t_10 = ((__pyx_v_count[0]) == 0); +          __pyx_t_10 = (((__pyx_v_count[0]) == 0) != 0);            if (__pyx_t_10) { -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":166 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":166   *                         count = get_val(dict[null_word], e_j)   *                         if count[0] == 0:   *                             num_pairs = num_pairs + 1             # <<<<<<<<<<<<<< @@ -14454,7 +14923,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL            }            __pyx_L27:; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":167 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":167   *                         if count[0] == 0:   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1             # <<<<<<<<<<<<<< @@ -14469,7 +14938,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        __pyx_L25:;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":168 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":168   *                             num_pairs = num_pairs + 1   *                         count[0] = count[0] + 1   *             free(links)             # <<<<<<<<<<<<<< @@ -14478,7 +14947,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      free(__pyx_v_links); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":169 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":169   *                         count[0] = count[0] + 1   *             free(links)   *             free(faligned)             # <<<<<<<<<<<<<< @@ -14487,7 +14956,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      free(__pyx_v_faligned); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":170 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":170   *             free(links)   *             free(faligned)   *             free(ealigned)             # <<<<<<<<<<<<<< @@ -14497,7 +14966,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      free(__pyx_v_ealigned);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":171 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":171   *             free(faligned)   *             free(ealigned)   *         self.f_index = IntList(initial_len=V_F)             # <<<<<<<<<<<<<< @@ -14519,7 +14988,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_13);    __pyx_t_13 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":172 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":172   *             free(ealigned)   *         self.f_index = IntList(initial_len=V_F)   *         self.e_index = IntList(initial_len=num_pairs)             # <<<<<<<<<<<<<< @@ -14541,7 +15010,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);    __pyx_t_12 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":173 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":173   *         self.f_index = IntList(initial_len=V_F)   *         self.e_index = IntList(initial_len=num_pairs)   *         self.col1 = FloatList(initial_len=num_pairs)             # <<<<<<<<<<<<<< @@ -14563,7 +15032,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_13);    __pyx_t_13 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":174 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":174   *         self.e_index = IntList(initial_len=num_pairs)   *         self.col1 = FloatList(initial_len=num_pairs)   *         self.col2 = FloatList(initial_len=num_pairs)             # <<<<<<<<<<<<<< @@ -14585,7 +15054,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_12);    __pyx_t_12 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":176 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":176   *         self.col2 = FloatList(initial_len=num_pairs)   *    *         num_pairs = 0             # <<<<<<<<<<<<<< @@ -14594,7 +15063,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    __pyx_v_num_pairs = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":177 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":177   *    *         num_pairs = 0   *         for i from 0 <= i < V_F:             # <<<<<<<<<<<<<< @@ -14604,7 +15073,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    __pyx_t_6 = __pyx_v_V_F;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":179 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":179   *         for i from 0 <= i < V_F:   *             #self.f_index[i] = num_pairs   *             self.f_index.set(i, num_pairs)             # <<<<<<<<<<<<<< @@ -14613,17 +15082,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */      ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->set(__pyx_v_self->f_index, __pyx_v_i, __pyx_v_num_pairs); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":180 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":180   *             #self.f_index[i] = num_pairs   *             self.f_index.set(i, num_pairs)   *             if dict[i] != NULL:             # <<<<<<<<<<<<<<   *                 self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)   *                 del_node(dict[i])   */ -    __pyx_t_10 = ((__pyx_v_dict[__pyx_v_i]) != NULL); +    __pyx_t_10 = (((__pyx_v_dict[__pyx_v_i]) != NULL) != 0);      if (__pyx_t_10) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":181 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":181   *             self.f_index.set(i, num_pairs)   *             if dict[i] != NULL:   *                 self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)             # <<<<<<<<<<<<<< @@ -14634,7 +15103,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":182 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":182   *             if dict[i] != NULL:   *                 self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)   *                 del_node(dict[i])             # <<<<<<<<<<<<<< @@ -14649,7 +15118,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL      __pyx_L30:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":183 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":183   *                 self._add_node(dict[i], &num_pairs, float(fmargin[i]), emargin)   *                 del_node(dict[i])   *         free(fmargin)             # <<<<<<<<<<<<<< @@ -14658,7 +15127,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    free(__pyx_v_fmargin); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":184 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":184   *                 del_node(dict[i])   *         free(fmargin)   *         free(emargin)             # <<<<<<<<<<<<<< @@ -14667,7 +15136,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    free(__pyx_v_emargin); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":185   *         free(fmargin)   *         free(emargin)   *         free(dict)             # <<<<<<<<<<<<<< @@ -14676,7 +15145,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL   */    free(__pyx_v_dict); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":186 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":186   *         free(emargin)   *         free(dict)   *         return             # <<<<<<<<<<<<<< @@ -14707,7 +15176,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_compute_from_data(struct __pyx_obj_3_sa_BiL    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":189 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":189   *    *    *     cdef _add_node(self, _node* n, int* num_pairs, float fmargin, int* emargin):             # <<<<<<<<<<<<<< @@ -14726,17 +15195,17 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("_add_node", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":191 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":191   *     cdef _add_node(self, _node* n, int* num_pairs, float fmargin, int* emargin):   *         cdef int loc   *         if n.smaller != NULL:             # <<<<<<<<<<<<<<   *             self._add_node(n.smaller, num_pairs, fmargin, emargin)   *         loc = num_pairs[0]   */ -  __pyx_t_1 = (__pyx_v_n->smaller != NULL); +  __pyx_t_1 = ((__pyx_v_n->smaller != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":192 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":192   *         cdef int loc   *         if n.smaller != NULL:   *             self._add_node(n.smaller, num_pairs, fmargin, emargin)             # <<<<<<<<<<<<<< @@ -14750,7 +15219,7 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":193 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":193   *         if n.smaller != NULL:   *             self._add_node(n.smaller, num_pairs, fmargin, emargin)   *         loc = num_pairs[0]             # <<<<<<<<<<<<<< @@ -14759,7 +15228,7 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py   */    __pyx_v_loc = (__pyx_v_num_pairs[0]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":194 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":194   *             self._add_node(n.smaller, num_pairs, fmargin, emargin)   *         loc = num_pairs[0]   *         self.e_index.set(loc, n.key)             # <<<<<<<<<<<<<< @@ -14768,7 +15237,7 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->set(__pyx_v_self->e_index, __pyx_v_loc, __pyx_v_n->key); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":195 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":195   *         loc = num_pairs[0]   *         self.e_index.set(loc, n.key)   *         self.col1.set(loc, float(n.val)/fmargin)             # <<<<<<<<<<<<<< @@ -14776,12 +15245,18 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py   *         num_pairs[0] = loc + 1   */    if (unlikely(__pyx_v_fmargin == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "float division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->set(__pyx_v_self->col1, __pyx_v_loc, (((double)__pyx_v_n->val) / __pyx_v_fmargin)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":196 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":196   *         self.e_index.set(loc, n.key)   *         self.col1.set(loc, float(n.val)/fmargin)   *         self.col2.set(loc, float(n.val)/float(emargin[n.key]))             # <<<<<<<<<<<<<< @@ -14789,12 +15264,18 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py   *         if n.bigger != NULL:   */    if (unlikely(((double)(__pyx_v_emargin[__pyx_v_n->key])) == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "float division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->set(__pyx_v_self->col2, __pyx_v_loc, (((double)__pyx_v_n->val) / ((double)(__pyx_v_emargin[__pyx_v_n->key])))); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":197 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":197   *         self.col1.set(loc, float(n.val)/fmargin)   *         self.col2.set(loc, float(n.val)/float(emargin[n.key]))   *         num_pairs[0] = loc + 1             # <<<<<<<<<<<<<< @@ -14803,17 +15284,17 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py   */    (__pyx_v_num_pairs[0]) = (__pyx_v_loc + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":198 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":198   *         self.col2.set(loc, float(n.val)/float(emargin[n.key]))   *         num_pairs[0] = loc + 1   *         if n.bigger != NULL:             # <<<<<<<<<<<<<<   *             self._add_node(n.bigger, num_pairs, fmargin, emargin)   *    */ -  __pyx_t_1 = (__pyx_v_n->bigger != NULL); +  __pyx_t_1 = ((__pyx_v_n->bigger != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":199 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":199   *         num_pairs[0] = loc + 1   *         if n.bigger != NULL:   *             self._add_node(n.bigger, num_pairs, fmargin, emargin)             # <<<<<<<<<<<<<< @@ -14843,11 +15324,14 @@ static PyObject *__pyx_f_3_sa_5BiLex__add_node(struct __pyx_obj_3_sa_BiLex *__py  static PyObject *__pyx_pw_3_sa_5BiLex_3write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_5BiLex_3write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -14860,7 +15344,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_3write_binary(PyObject *__pyx_v_self, PyOb    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":202 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":202   *    *    *     def write_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -14879,7 +15363,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":204 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":204   *     def write_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -14888,7 +15372,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":205 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":205   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.f_index.write_handle(f)             # <<<<<<<<<<<<<< @@ -14897,7 +15381,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->write_handle(__pyx_v_self->f_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":206 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":206   *         f = fopen(filename, "w")   *         self.f_index.write_handle(f)   *         self.e_index.write_handle(f)             # <<<<<<<<<<<<<< @@ -14906,7 +15390,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->write_handle(__pyx_v_self->e_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":207 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":207   *         self.f_index.write_handle(f)   *         self.e_index.write_handle(f)   *         self.col1.write_handle(f)             # <<<<<<<<<<<<<< @@ -14915,7 +15399,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->write_handle(__pyx_v_self->col1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":208 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":208   *         self.e_index.write_handle(f)   *         self.col1.write_handle(f)   *         self.col2.write_handle(f)             # <<<<<<<<<<<<<< @@ -14924,7 +15408,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->write_handle(__pyx_v_self->col2, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":209 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":209   *         self.col1.write_handle(f)   *         self.col2.write_handle(f)   *         self.write_wordlist(self.id2fword, f)             # <<<<<<<<<<<<<< @@ -14938,7 +15422,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":210 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":210   *         self.col2.write_handle(f)   *         self.write_wordlist(self.id2fword, f)   *         self.write_wordlist(self.id2eword, f)             # <<<<<<<<<<<<<< @@ -14952,7 +15436,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":211 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":211   *         self.write_wordlist(self.id2fword, f)   *         self.write_wordlist(self.id2eword, f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -14974,7 +15458,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_2write_binary(struct __pyx_obj_3_sa_BiLex    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":214 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":214   *    *    *     cdef write_wordlist(self, wordlist, FILE* f):             # <<<<<<<<<<<<<< @@ -14999,7 +15483,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_wordlist", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":218 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":218   *         cdef int num_words   *    *         num_words = len(wordlist)             # <<<<<<<<<<<<<< @@ -15009,7 +15493,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o    __pyx_t_1 = PyObject_Length(__pyx_v_wordlist); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_num_words = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":219 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":219   *    *         num_words = len(wordlist)   *         fwrite(&(num_words), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -15018,7 +15502,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o   */    fwrite((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":220 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":220   *         num_words = len(wordlist)   *         fwrite(&(num_words), sizeof(int), 1, f)   *         for word in wordlist:             # <<<<<<<<<<<<<< @@ -15036,10 +15520,18 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_2)) {        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_2)) {        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_2);        if (unlikely(!__pyx_t_4)) { @@ -15055,7 +15547,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o      __pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":221 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":221   *         fwrite(&(num_words), sizeof(int), 1, f)   *         for word in wordlist:   *             word_len = len(word) + 1             # <<<<<<<<<<<<<< @@ -15065,7 +15557,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o      __pyx_t_5 = PyObject_Length(__pyx_v_word); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_v_word_len = (__pyx_t_5 + 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":222 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":222   *         for word in wordlist:   *             word_len = len(word) + 1   *             fwrite(&(word_len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -15074,14 +15566,14 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o   */      fwrite((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":223 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":223   *             word_len = len(word) + 1   *             fwrite(&(word_len), sizeof(int), 1, f)   *             fwrite(<char *>word, sizeof(char), word_len, f)             # <<<<<<<<<<<<<<   *    *    */ -    __pyx_t_6 = PyBytes_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_word); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      fwrite(((char *)__pyx_t_6), (sizeof(char)), __pyx_v_word_len, __pyx_v_f);    }    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -15100,7 +15592,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_write_wordlist(CYTHON_UNUSED struct __pyx_o    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":226 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":226   *    *    *     cdef read_wordlist(self, word2id, id2word, FILE* f):             # <<<<<<<<<<<<<< @@ -15124,7 +15616,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_wordlist", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":231 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":231   *         cdef char* word   *    *         fread(&(num_words), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -15133,7 +15625,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob   */    fread((&__pyx_v_num_words), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":232 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":232   *    *         fread(&(num_words), sizeof(int), 1, f)   *         for i from 0 <= i < num_words:             # <<<<<<<<<<<<<< @@ -15143,7 +15635,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob    __pyx_t_1 = __pyx_v_num_words;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":233 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":233   *         fread(&(num_words), sizeof(int), 1, f)   *         for i from 0 <= i < num_words:   *             fread(&(word_len), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -15152,7 +15644,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob   */      fread((&__pyx_v_word_len), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":234 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":234   *         for i from 0 <= i < num_words:   *             fread(&(word_len), sizeof(int), 1, f)   *             word = <char*> malloc (word_len * sizeof(char))             # <<<<<<<<<<<<<< @@ -15161,7 +15653,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob   */      __pyx_v_word = ((char *)malloc((__pyx_v_word_len * (sizeof(char))))); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":235 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":235   *             fread(&(word_len), sizeof(int), 1, f)   *             word = <char*> malloc (word_len * sizeof(char))   *             fread(word, sizeof(char), word_len, f)             # <<<<<<<<<<<<<< @@ -15170,7 +15662,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob   */      fread(__pyx_v_word, (sizeof(char)), __pyx_v_word_len, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":236 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":236   *             word = <char*> malloc (word_len * sizeof(char))   *             fread(word, sizeof(char), word_len, f)   *             word2id[word] = len(id2word)             # <<<<<<<<<<<<<< @@ -15180,27 +15672,27 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob      __pyx_t_2 = PyObject_Length(__pyx_v_id2word); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      if (PyObject_SetItem(__pyx_v_word2id, ((PyObject *)__pyx_t_4), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":237 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":237   *             fread(word, sizeof(char), word_len, f)   *             word2id[word] = len(id2word)   *             id2word.append(word)             # <<<<<<<<<<<<<<   *             free(word)   *    */ -    __pyx_t_3 = PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_word); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_3));      __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_id2word, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 237; __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_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":238 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":238   *             word2id[word] = len(id2word)   *             id2word.append(word)   *             free(word)             # <<<<<<<<<<<<<< @@ -15227,11 +15719,14 @@ static PyObject *__pyx_f_3_sa_5BiLex_read_wordlist(CYTHON_UNUSED struct __pyx_ob  static PyObject *__pyx_pw_3_sa_5BiLex_5read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_5BiLex_5read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -15244,7 +15739,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_5read_binary(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":240 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":240   *             free(word)   *    *     def read_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -15264,7 +15759,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":242 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":242   *     def read_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -15273,7 +15768,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":243 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":243   *         cdef FILE* f   *         f = fopen(filename, "r")   *         self.f_index.read_handle(f)             # <<<<<<<<<<<<<< @@ -15282,7 +15777,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->f_index->__pyx_vtab)->read_handle(__pyx_v_self->f_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":244 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":244   *         f = fopen(filename, "r")   *         self.f_index.read_handle(f)   *         self.e_index.read_handle(f)             # <<<<<<<<<<<<<< @@ -15291,7 +15786,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->e_index->__pyx_vtab)->read_handle(__pyx_v_self->e_index, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":245 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":245   *         self.f_index.read_handle(f)   *         self.e_index.read_handle(f)   *         self.col1.read_handle(f)             # <<<<<<<<<<<<<< @@ -15300,7 +15795,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col1->__pyx_vtab)->read_handle(__pyx_v_self->col1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":246 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":246   *         self.e_index.read_handle(f)   *         self.col1.read_handle(f)   *         self.col2.read_handle(f)             # <<<<<<<<<<<<<< @@ -15309,7 +15804,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *   */    ((struct __pyx_vtabstruct_3_sa_FloatList *)__pyx_v_self->col2->__pyx_vtab)->read_handle(__pyx_v_self->col2, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":247 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":247   *         self.col1.read_handle(f)   *         self.col2.read_handle(f)   *         self.read_wordlist(self.fword2id, self.id2fword, f)             # <<<<<<<<<<<<<< @@ -15326,7 +15821,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":248 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":248   *         self.col2.read_handle(f)   *         self.read_wordlist(self.fword2id, self.id2fword, f)   *         self.read_wordlist(self.eword2id, self.id2eword, f)             # <<<<<<<<<<<<<< @@ -15343,7 +15838,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_4read_binary(struct __pyx_obj_3_sa_BiLex *    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":249 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":249   *         self.read_wordlist(self.fword2id, self.id2fword, f)   *         self.read_wordlist(self.eword2id, self.id2eword, f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -15377,7 +15872,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_7get_e_id(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":252 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":252   *    *    *     def get_e_id(self, eword):             # <<<<<<<<<<<<<< @@ -15390,51 +15885,53 @@ static PyObject *__pyx_pf_3_sa_5BiLex_6get_e_id(struct __pyx_obj_3_sa_BiLex *__p    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; -  Py_ssize_t __pyx_t_3; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL; +  Py_ssize_t __pyx_t_4;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_e_id", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":253 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":253   *    *     def get_e_id(self, eword):   *         if eword not in self.eword2id:             # <<<<<<<<<<<<<<   *             e_id = len(self.id2eword)   *             self.id2eword.append(eword)   */ -  __pyx_t_1 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self->eword2id, __pyx_v_eword))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_eword, __pyx_v_self->eword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":254 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":254   *     def get_e_id(self, eword):   *         if eword not in self.eword2id:   *             e_id = len(self.id2eword)             # <<<<<<<<<<<<<<   *             self.id2eword.append(eword)   *             self.eword2id[eword] = e_id   */ -    __pyx_t_2 = __pyx_v_self->id2eword; -    __Pyx_INCREF(__pyx_t_2); -    __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_v_e_id = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_t_3 = __pyx_v_self->id2eword; +    __Pyx_INCREF(__pyx_t_3); +    __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_v_e_id = __pyx_t_3; +    __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":255 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":255   *         if eword not in self.eword2id:   *             e_id = len(self.id2eword)   *             self.id2eword.append(eword)             # <<<<<<<<<<<<<<   *             self.eword2id[eword] = e_id   *         return self.eword2id[eword]   */ -    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_self->id2eword, __pyx_v_eword); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->id2eword, __pyx_v_eword); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":256 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":256   *             e_id = len(self.id2eword)   *             self.id2eword.append(eword)   *             self.eword2id[eword] = e_id             # <<<<<<<<<<<<<< @@ -15446,7 +15943,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_6get_e_id(struct __pyx_obj_3_sa_BiLex *__p    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":257 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":257   *             self.id2eword.append(eword)   *             self.eword2id[eword] = e_id   *         return self.eword2id[eword]             # <<<<<<<<<<<<<< @@ -15454,16 +15951,16 @@ static PyObject *__pyx_pf_3_sa_5BiLex_6get_e_id(struct __pyx_obj_3_sa_BiLex *__p   *    */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_r = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 257; __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("_sa.BiLex.get_e_id", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -15484,7 +15981,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_9get_f_id(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":260 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":260   *    *    *     def get_f_id(self, fword):             # <<<<<<<<<<<<<< @@ -15497,51 +15994,53 @@ static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__p    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; -  Py_ssize_t __pyx_t_3; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL; +  Py_ssize_t __pyx_t_4;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_f_id", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":261 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":261   *    *     def get_f_id(self, fword):   *         if fword not in self.fword2id:             # <<<<<<<<<<<<<<   *             f_id = len(self.id2fword)   *             self.id2fword.append(fword)   */ -  __pyx_t_1 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self->fword2id, __pyx_v_fword))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_fword, __pyx_v_self->fword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":262 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":262   *     def get_f_id(self, fword):   *         if fword not in self.fword2id:   *             f_id = len(self.id2fword)             # <<<<<<<<<<<<<<   *             self.id2fword.append(fword)   *             self.fword2id[fword] = f_id   */ -    __pyx_t_2 = __pyx_v_self->id2fword; -    __Pyx_INCREF(__pyx_t_2); -    __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_v_f_id = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_t_3 = __pyx_v_self->id2fword; +    __Pyx_INCREF(__pyx_t_3); +    __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_v_f_id = __pyx_t_3; +    __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":263 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":263   *         if fword not in self.fword2id:   *             f_id = len(self.id2fword)   *             self.id2fword.append(fword)             # <<<<<<<<<<<<<<   *             self.fword2id[fword] = f_id   *         return self.fword2id[fword]   */ -    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_self->id2fword, __pyx_v_fword); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->id2fword, __pyx_v_fword); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":264 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":264   *             f_id = len(self.id2fword)   *             self.id2fword.append(fword)   *             self.fword2id[fword] = f_id             # <<<<<<<<<<<<<< @@ -15553,7 +16052,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__p    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":265 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":265   *             self.id2fword.append(fword)   *             self.fword2id[fword] = f_id   *         return self.fword2id[fword]             # <<<<<<<<<<<<<< @@ -15561,16 +16060,16 @@ static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__p   *    */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_r = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 265; __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("_sa.BiLex.get_f_id", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -15584,11 +16083,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_8get_f_id(struct __pyx_obj_3_sa_BiLex *__p  static PyObject *__pyx_pw_3_sa_5BiLex_11read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_5BiLex_11read_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -15601,7 +16103,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_11read_text(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":268 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":268   *    *    *     def read_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -15656,7 +16158,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":272 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":272   *         cdef IntList fcount   *    *         fcount = IntList()             # <<<<<<<<<<<<<< @@ -15668,7 +16170,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_    __pyx_v_fcount = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":273 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273   *    *         fcount = IntList()   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<< @@ -15676,9 +16178,9 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_   *             for line in f:   */    /*with:*/ { -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__gzip_or_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2));      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -15689,9 +16191,9 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_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[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -15708,7 +16210,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_f = __pyx_t_1;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":275 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":275   *         with gzip_or_text(filename) as f:   *             # first loop merely establishes size of array objects   *             for line in f:             # <<<<<<<<<<<<<< @@ -15726,10 +16228,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_2 = __pyx_t_9(__pyx_t_1);                if (unlikely(!__pyx_t_2)) { @@ -15745,36 +16255,37 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_line = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":276 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":276   *             # first loop merely establishes size of array objects   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()             # <<<<<<<<<<<<<<   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)   */ -            __pyx_t_2 = PyObject_GetAttr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_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[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_3);              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;              if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {                PyObject* sequence = __pyx_t_3; +              #if CYTHON_COMPILING_IN_CPYTHON +              Py_ssize_t size = Py_SIZE(sequence); +              #else +              Py_ssize_t size = PySequence_Size(sequence); +              #endif +              if (unlikely(size != 4)) { +                if (size > 4) __Pyx_RaiseTooManyValuesError(4); +                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              } +              #if CYTHON_COMPILING_IN_CPYTHON                if (likely(PyTuple_CheckExact(sequence))) { -                if (unlikely(PyTuple_GET_SIZE(sequence) != 4)) { -                  if (PyTuple_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                  else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);                   __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);                   __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);                   __pyx_t_12 = PyTuple_GET_ITEM(sequence, 3);                 } else { -                if (unlikely(PyList_GET_SIZE(sequence) != 4)) { -                  if (PyList_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                  else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_2 = PyList_GET_ITEM(sequence, 0);                   __pyx_t_10 = PyList_GET_ITEM(sequence, 1);                   __pyx_t_11 = PyList_GET_ITEM(sequence, 2);  @@ -15784,28 +16295,37 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_                __Pyx_INCREF(__pyx_t_10);                __Pyx_INCREF(__pyx_t_11);                __Pyx_INCREF(__pyx_t_12); +              #else +              Py_ssize_t i; +              PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; +              for (i=0; i < 4; i++) { +                PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __Pyx_GOTREF(item); +                *(temps[i]) = item; +              } +              #endif                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -            } else { +            } else +            {                Py_ssize_t index = -1; +              PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12};                __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_13);                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;                __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; -              index = 0; __pyx_t_2 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_2); -              index = 1; __pyx_t_10 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_10)) goto __pyx_L18_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_10); -              index = 2; __pyx_t_11 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_11)) goto __pyx_L18_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_11); -              index = 3; __pyx_t_12 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_12)) goto __pyx_L18_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_12); +              for (index=0; index < 4; index++) { +                PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L18_unpacking_failed; +                __Pyx_GOTREF(item); +                *(temps[index]) = item; +              }                if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_14 = NULL;                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;                goto __pyx_L19_unpacking_done;                __pyx_L18_unpacking_failed:;                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -              if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -              if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +              __pyx_t_14 = NULL; +              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __pyx_L19_unpacking_done:;              } @@ -15822,14 +16342,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_score2 = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":277 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":277   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()   *                 f_id = self.get_f_id(fword)             # <<<<<<<<<<<<<<   *                 e_id = self.get_e_id(eword)   *                 while f_id >= len(fcount):   */ -            __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_3);              __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_12); @@ -15844,14 +16364,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_f_id = __pyx_t_11;              __pyx_t_11 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":278 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":278   *                 (fword, eword, score1, score2) = line.split()   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)             # <<<<<<<<<<<<<<   *                 while f_id >= len(fcount):   *                     fcount.append(0)   */ -            __pyx_t_11 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_11);              __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_12); @@ -15866,7 +16386,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_e_id = __pyx_t_3;              __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":279 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":279   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)   *                 while f_id >= len(fcount):             # <<<<<<<<<<<<<< @@ -15877,14 +16397,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_                __pyx_t_15 = PyObject_Length(((PyObject *)__pyx_v_fcount)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_3); -              __pyx_t_12 = PyObject_RichCompare(__pyx_v_f_id, __pyx_t_3, Py_GE); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -              __Pyx_GOTREF(__pyx_t_12); +              __pyx_t_12 = PyObject_RichCompare(__pyx_v_f_id, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;                __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;                if (!__pyx_t_16) break; -              /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":280 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":280   *                 e_id = self.get_e_id(eword)   *                 while f_id >= len(fcount):   *                     fcount.append(0)             # <<<<<<<<<<<<<< @@ -15896,7 +16415,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;              } -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":281 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":281   *                 while f_id >= len(fcount):   *                     fcount.append(0)   *                 fcount.arr[f_id] = fcount.arr[f_id] + 1             # <<<<<<<<<<<<<< @@ -15909,7 +16428,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            }            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":284 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":284   *    *             # Allocate space for dictionary in arrays   *             N = 0             # <<<<<<<<<<<<<< @@ -15919,7 +16438,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __Pyx_INCREF(__pyx_int_0);            __pyx_v_N = __pyx_int_0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":285 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":285   *             # Allocate space for dictionary in arrays   *             N = 0   *             n_f = len(fcount)             # <<<<<<<<<<<<<< @@ -15932,7 +16451,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_n_f = __pyx_t_1;            __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":286 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":286   *             N = 0   *             n_f = len(fcount)   *             self.f_index = IntList(initial_len=n_f+1)             # <<<<<<<<<<<<<< @@ -15954,7 +16473,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_self->f_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":287 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":287   *             n_f = len(fcount)   *             self.f_index = IntList(initial_len=n_f+1)   *             for i from 0 <= i < n_f:             # <<<<<<<<<<<<<< @@ -15969,7 +16488,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_i = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":288 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":288   *             self.f_index = IntList(initial_len=n_f+1)   *             for i from 0 <= i < n_f:   *                 self.f_index.arr[i] = N             # <<<<<<<<<<<<<< @@ -15980,7 +16499,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              (__pyx_v_self->f_index->arr[__pyx_t_8]) = __pyx_t_20; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":289 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":289   *             for i from 0 <= i < n_f:   *                 self.f_index.arr[i] = N   *                 N = N + fcount.arr[i]             # <<<<<<<<<<<<<< @@ -15997,7 +16516,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_N = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":290 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":290   *                 self.f_index.arr[i] = N   *                 N = N + fcount.arr[i]   *                 fcount.arr[i] = 0             # <<<<<<<<<<<<<< @@ -16009,7 +16528,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_t_19 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_19 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            } -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":287 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":287   *             n_f = len(fcount)   *             self.f_index = IntList(initial_len=n_f+1)   *             for i from 0 <= i < n_f:             # <<<<<<<<<<<<<< @@ -16022,7 +16541,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_i = __pyx_t_1;            __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":291 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":291   *                 N = N + fcount.arr[i]   *                 fcount.arr[i] = 0   *             self.f_index.arr[n_f] = N             # <<<<<<<<<<<<<< @@ -16033,7 +16552,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n_f); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            (__pyx_v_self->f_index->arr[__pyx_t_8]) = __pyx_t_20; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":292 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":292   *                 fcount.arr[i] = 0   *             self.f_index.arr[n_f] = N   *             self.e_index = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -16052,7 +16571,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_self->e_index = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":293 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":293   *             self.f_index.arr[n_f] = N   *             self.e_index = IntList(initial_len=N)   *             self.col1 = FloatList(initial_len=N)             # <<<<<<<<<<<<<< @@ -16071,7 +16590,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_self->col1 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_1);            __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":294 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":294   *             self.e_index = IntList(initial_len=N)   *             self.col1 = FloatList(initial_len=N)   *             self.col2 = FloatList(initial_len=N)             # <<<<<<<<<<<<<< @@ -16090,21 +16609,21 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __pyx_v_self->col2 = ((struct __pyx_obj_3_sa_FloatList *)__pyx_t_12);            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":297 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":297   *    *             # Re-read file, placing words into buckets   *             f.seek(0)             # <<<<<<<<<<<<<<   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()   */ -          __pyx_t_12 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__seek); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__seek); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_12); -          __pyx_t_1 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_k_tuple_43), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":298 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":298   *             # Re-read file, placing words into buckets   *             f.seek(0)   *             for line in f:             # <<<<<<<<<<<<<< @@ -16122,10 +16641,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_12 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_12 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_12 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_12 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_12 = __pyx_t_9(__pyx_t_1);                if (unlikely(!__pyx_t_12)) { @@ -16141,36 +16668,37 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_line = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":299 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":299   *             f.seek(0)   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()             # <<<<<<<<<<<<<<   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)   */ -            __pyx_t_12 = PyObject_GetAttr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s__split); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_12);              __pyx_t_3 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_3);              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;              if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {                PyObject* sequence = __pyx_t_3; +              #if CYTHON_COMPILING_IN_CPYTHON +              Py_ssize_t size = Py_SIZE(sequence); +              #else +              Py_ssize_t size = PySequence_Size(sequence); +              #endif +              if (unlikely(size != 4)) { +                if (size > 4) __Pyx_RaiseTooManyValuesError(4); +                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              } +              #if CYTHON_COMPILING_IN_CPYTHON                if (likely(PyTuple_CheckExact(sequence))) { -                if (unlikely(PyTuple_GET_SIZE(sequence) != 4)) { -                  if (PyTuple_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                  else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0);                   __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1);                   __pyx_t_10 = PyTuple_GET_ITEM(sequence, 2);                   __pyx_t_2 = PyTuple_GET_ITEM(sequence, 3);                 } else { -                if (unlikely(PyList_GET_SIZE(sequence) != 4)) { -                  if (PyList_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                  else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_12 = PyList_GET_ITEM(sequence, 0);                   __pyx_t_11 = PyList_GET_ITEM(sequence, 1);                   __pyx_t_10 = PyList_GET_ITEM(sequence, 2);  @@ -16180,28 +16708,37 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_                __Pyx_INCREF(__pyx_t_11);                __Pyx_INCREF(__pyx_t_10);                __Pyx_INCREF(__pyx_t_2); +              #else +              Py_ssize_t i; +              PyObject** temps[4] = {&__pyx_t_12,&__pyx_t_11,&__pyx_t_10,&__pyx_t_2}; +              for (i=0; i < 4; i++) { +                PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +                __Pyx_GOTREF(item); +                *(temps[i]) = item; +              } +              #endif                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -            } else { +            } else +            {                Py_ssize_t index = -1; +              PyObject** temps[4] = {&__pyx_t_12,&__pyx_t_11,&__pyx_t_10,&__pyx_t_2};                __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_13);                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;                __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; -              index = 0; __pyx_t_12 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_12)) goto __pyx_L26_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_12); -              index = 1; __pyx_t_11 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_11)) goto __pyx_L26_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_11); -              index = 2; __pyx_t_10 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_10)) goto __pyx_L26_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_10); -              index = 3; __pyx_t_2 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_2)) goto __pyx_L26_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_2); +              for (index=0; index < 4; index++) { +                PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L26_unpacking_failed; +                __Pyx_GOTREF(item); +                *(temps[index]) = item; +              }                if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_14 = NULL;                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;                goto __pyx_L27_unpacking_done;                __pyx_L26_unpacking_failed:;                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -              if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -              if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +              __pyx_t_14 = NULL; +              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __pyx_L27_unpacking_done:;              } @@ -16218,14 +16755,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_score2 = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":300 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":300   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()   *                 f_id = self.get_f_id(fword)             # <<<<<<<<<<<<<<   *                 e_id = self.get_e_id(eword)   *                 index = self.f_index.arr[f_id] + fcount.arr[f_id]   */ -            __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_f_id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_3);              __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2); @@ -16240,14 +16777,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_f_id = __pyx_t_10;              __pyx_t_10 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":301 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":301   *                 (fword, eword, score1, score2) = line.split()   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)             # <<<<<<<<<<<<<<   *                 index = self.f_index.arr[f_id] + fcount.arr[f_id]   *                 fcount.arr[f_id] = fcount.arr[f_id] + 1   */ -            __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__get_e_id); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10);              __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2); @@ -16262,7 +16799,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_e_id = __pyx_t_3;              __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":302 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":302   *                 f_id = self.get_f_id(fword)   *                 e_id = self.get_e_id(eword)   *                 index = self.f_index.arr[f_id] + fcount.arr[f_id]             # <<<<<<<<<<<<<< @@ -16277,7 +16814,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_v_index = __pyx_t_3;              __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":303 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":303   *                 e_id = self.get_e_id(eword)   *                 index = self.f_index.arr[f_id] + fcount.arr[f_id]   *                 fcount.arr[f_id] = fcount.arr[f_id] + 1             # <<<<<<<<<<<<<< @@ -16288,7 +16825,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_t_15 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_15 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              (__pyx_v_fcount->arr[__pyx_t_15]) = ((__pyx_v_fcount->arr[__pyx_t_17]) + 1); -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":304 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":304   *                 index = self.f_index.arr[f_id] + fcount.arr[f_id]   *                 fcount.arr[f_id] = fcount.arr[f_id] + 1   *                 self.e_index.arr[index] = int(e_id)             # <<<<<<<<<<<<<< @@ -16308,7 +16845,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              __pyx_t_17 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_17 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              (__pyx_v_self->e_index->arr[__pyx_t_17]) = __pyx_t_20; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":305 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":305   *                 fcount.arr[f_id] = fcount.arr[f_id] + 1   *                 self.e_index.arr[index] = int(e_id)   *                 self.col1[index] = float(score1)             # <<<<<<<<<<<<<< @@ -16321,7 +16858,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_              if (PyObject_SetItem(((PyObject *)__pyx_v_self->col1), __pyx_v_index, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":306 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":306   *                 self.e_index.arr[index] = int(e_id)   *                 self.col1[index] = float(score1)   *                 self.col2[index] = float(score2)             # <<<<<<<<<<<<<< @@ -16349,7 +16886,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":273 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273   *    *         fcount = IntList()   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<< @@ -16379,8 +16916,8 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_            __Pyx_GOTREF(__pyx_t_22);            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_22);            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; -          if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_23 = (!__pyx_t_16); +          if (__pyx_t_16 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_23 = ((!(__pyx_t_16 != 0)) != 0);            if (__pyx_t_23) {              __Pyx_GIVEREF(__pyx_t_1);              __Pyx_GIVEREF(__pyx_t_2); @@ -16413,13 +16950,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      }      /*finally:*/ {        if (__pyx_t_4) { -        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_44, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_46, NULL);          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_23 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_23 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L31; @@ -16429,7 +16966,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      __pyx_L31:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":309 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":309   *    *         # Sort buckets by eword   *         for b from 0 <= b < n_f:             # <<<<<<<<<<<<<< @@ -16445,7 +16982,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      __pyx_v_b = __pyx_t_3;      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":310 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":310   *         # Sort buckets by eword   *         for b from 0 <= b < n_f:   *             i = self.f_index.arr[b]             # <<<<<<<<<<<<<< @@ -16459,7 +16996,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      __pyx_v_i = __pyx_t_3;      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":311 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":311   *         for b from 0 <= b < n_f:   *             i = self.f_index.arr[b]   *             j = self.f_index.arr[b+1]             # <<<<<<<<<<<<<< @@ -16476,7 +17013,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_      __pyx_v_j = __pyx_t_3;      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":312 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":312   *             i = self.f_index.arr[b]   *             j = self.f_index.arr[b+1]   *             self.qsort(i,j, "")             # <<<<<<<<<<<<<< @@ -16485,27 +17022,24 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_   */      __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_24 = __Pyx_PyInt_AsInt(__pyx_v_j); if (unlikely((__pyx_t_24 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_3 = ((PyObject *)__pyx_kp_s_45); -    __Pyx_INCREF(__pyx_t_3); -    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, __pyx_t_20, __pyx_t_24, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, __pyx_t_20, __pyx_t_24, ((PyObject *)__pyx_kp_s_47)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 312; __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_t_18 = __Pyx_PyInt_AsLong(__pyx_v_b); if (unlikely((__pyx_t_18 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":309 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":309   *    *         # Sort buckets by eword   *         for b from 0 <= b < n_f:             # <<<<<<<<<<<<<<   *             i = self.f_index.arr[b]   *             j = self.f_index.arr[b+1]   */ -  __pyx_t_2 = PyInt_FromLong(__pyx_t_18); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_3 = PyInt_FromLong(__pyx_t_18); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3);    __Pyx_XDECREF(__pyx_v_b); -  __pyx_v_b = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_v_b = __pyx_t_3; +  __pyx_t_3 = 0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None);    goto __pyx_L0; @@ -16540,7 +17074,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_10read_text(struct __pyx_obj_3_sa_BiLex *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":315 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":315   *    *    *     cdef swap(self, int i, int j):             # <<<<<<<<<<<<<< @@ -16556,17 +17090,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    int __pyx_t_1;    __Pyx_RefNannySetupContext("swap", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":319 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":319   *         cdef float ftmp   *    *         if i == j:             # <<<<<<<<<<<<<<   *             return   *    */ -  __pyx_t_1 = (__pyx_v_i == __pyx_v_j); +  __pyx_t_1 = ((__pyx_v_i == __pyx_v_j) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":320 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":320   *    *         if i == j:   *             return             # <<<<<<<<<<<<<< @@ -16580,7 +17114,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":322 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":322   *             return   *    *         itmp = self.e_index.arr[i]             # <<<<<<<<<<<<<< @@ -16589,7 +17123,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    __pyx_v_itmp = (__pyx_v_self->e_index->arr[__pyx_v_i]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":323 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":323   *    *         itmp = self.e_index.arr[i]   *         self.e_index.arr[i] = self.e_index.arr[j]             # <<<<<<<<<<<<<< @@ -16598,7 +17132,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    (__pyx_v_self->e_index->arr[__pyx_v_i]) = (__pyx_v_self->e_index->arr[__pyx_v_j]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":324 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":324   *         itmp = self.e_index.arr[i]   *         self.e_index.arr[i] = self.e_index.arr[j]   *         self.e_index.arr[j] = itmp             # <<<<<<<<<<<<<< @@ -16607,7 +17141,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    (__pyx_v_self->e_index->arr[__pyx_v_j]) = __pyx_v_itmp; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":326 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":326   *         self.e_index.arr[j] = itmp   *    *         ftmp = self.col1.arr[i]             # <<<<<<<<<<<<<< @@ -16616,7 +17150,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    __pyx_v_ftmp = (__pyx_v_self->col1->arr[__pyx_v_i]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":327 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":327   *    *         ftmp = self.col1.arr[i]   *         self.col1.arr[i] = self.col1.arr[j]             # <<<<<<<<<<<<<< @@ -16625,7 +17159,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    (__pyx_v_self->col1->arr[__pyx_v_i]) = (__pyx_v_self->col1->arr[__pyx_v_j]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":328 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":328   *         ftmp = self.col1.arr[i]   *         self.col1.arr[i] = self.col1.arr[j]   *         self.col1.arr[j] = ftmp             # <<<<<<<<<<<<<< @@ -16634,7 +17168,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    (__pyx_v_self->col1->arr[__pyx_v_j]) = __pyx_v_ftmp; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":330 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":330   *         self.col1.arr[j] = ftmp   *    *         ftmp = self.col2.arr[i]             # <<<<<<<<<<<<<< @@ -16643,7 +17177,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    __pyx_v_ftmp = (__pyx_v_self->col2->arr[__pyx_v_i]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":331 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":331   *    *         ftmp = self.col2.arr[i]   *         self.col2.arr[i] = self.col2.arr[j]             # <<<<<<<<<<<<<< @@ -16652,7 +17186,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s   */    (__pyx_v_self->col2->arr[__pyx_v_i]) = (__pyx_v_self->col2->arr[__pyx_v_j]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":332 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":332   *         ftmp = self.col2.arr[i]   *         self.col2.arr[i] = self.col2.arr[j]   *         self.col2.arr[j] = ftmp             # <<<<<<<<<<<<<< @@ -16668,7 +17202,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_swap(struct __pyx_obj_3_sa_BiLex *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":335 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":335   *    *    *     cdef qsort(self, int i, int j, pad):             # <<<<<<<<<<<<<< @@ -16691,24 +17225,24 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("qsort", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":338 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":338   *         cdef int pval, p   *    *         if i > j:             # <<<<<<<<<<<<<<   *             raise Exception("Sort error in CLex")   *         if i == j: #empty interval   */ -  __pyx_t_1 = (__pyx_v_i > __pyx_v_j); +  __pyx_t_1 = ((__pyx_v_i > __pyx_v_j) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":339 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":339   *    *         if i > j:   *             raise Exception("Sort error in CLex")             # <<<<<<<<<<<<<<   *         if i == j: #empty interval   *             return   */ -    __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_47), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_49), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_Raise(__pyx_t_2, 0, 0, 0);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -16717,17 +17251,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":340 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":340   *         if i > j:   *             raise Exception("Sort error in CLex")   *         if i == j: #empty interval             # <<<<<<<<<<<<<<   *             return   *         if i == j-1: # singleton interval   */ -  __pyx_t_1 = (__pyx_v_i == __pyx_v_j); +  __pyx_t_1 = ((__pyx_v_i == __pyx_v_j) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":341 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":341   *             raise Exception("Sort error in CLex")   *         if i == j: #empty interval   *             return             # <<<<<<<<<<<<<< @@ -16741,17 +17275,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":342 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":342   *         if i == j: #empty interval   *             return   *         if i == j-1: # singleton interval             # <<<<<<<<<<<<<<   *             return   *    */ -  __pyx_t_1 = (__pyx_v_i == (__pyx_v_j - 1)); +  __pyx_t_1 = ((__pyx_v_i == (__pyx_v_j - 1)) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":343 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":343   *             return   *         if i == j-1: # singleton interval   *             return             # <<<<<<<<<<<<<< @@ -16765,7 +17299,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":345 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":345   *             return   *    *         p = (i+j)/2             # <<<<<<<<<<<<<< @@ -16774,7 +17308,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_   */    __pyx_v_p = __Pyx_div_long((__pyx_v_i + __pyx_v_j), 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":346 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":346   *    *         p = (i+j)/2   *         pval = self.e_index.arr[p]             # <<<<<<<<<<<<<< @@ -16783,7 +17317,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_   */    __pyx_v_pval = (__pyx_v_self->e_index->arr[__pyx_v_p]); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":347 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":347   *         p = (i+j)/2   *         pval = self.e_index.arr[p]   *         self.swap(i, p)             # <<<<<<<<<<<<<< @@ -16794,7 +17328,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":348 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":348   *         pval = self.e_index.arr[p]   *         self.swap(i, p)   *         p = i             # <<<<<<<<<<<<<< @@ -16803,7 +17337,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_   */    __pyx_v_p = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":349 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":349   *         self.swap(i, p)   *         p = i   *         for k from i+1 <= k < j:             # <<<<<<<<<<<<<< @@ -16813,17 +17347,17 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_    __pyx_t_3 = __pyx_v_j;    for (__pyx_v_k = (__pyx_v_i + 1); __pyx_v_k < __pyx_t_3; __pyx_v_k++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":350 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":350   *         p = i   *         for k from i+1 <= k < j:   *             if pval >= self.e_index.arr[k]:             # <<<<<<<<<<<<<<   *                 self.swap(p+1, k)   *                 self.swap(p, p+1)   */ -    __pyx_t_1 = (__pyx_v_pval >= (__pyx_v_self->e_index->arr[__pyx_v_k])); +    __pyx_t_1 = ((__pyx_v_pval >= (__pyx_v_self->e_index->arr[__pyx_v_k])) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":351 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":351   *         for k from i+1 <= k < j:   *             if pval >= self.e_index.arr[k]:   *                 self.swap(p+1, k)             # <<<<<<<<<<<<<< @@ -16834,7 +17368,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":352 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":352   *             if pval >= self.e_index.arr[k]:   *                 self.swap(p+1, k)   *                 self.swap(p, p+1)             # <<<<<<<<<<<<<< @@ -16845,7 +17379,7 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":353 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":353   *                 self.swap(p+1, k)   *                 self.swap(p, p+1)   *                 p = p + 1             # <<<<<<<<<<<<<< @@ -16858,28 +17392,28 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_      __pyx_L8:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":354 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":354   *                 self.swap(p, p+1)   *                 p = p + 1   *         self.qsort(i,p, pad+"    ")             # <<<<<<<<<<<<<<   *         self.qsort(p+1,j, pad+"    ")   *    */ -  __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, __pyx_v_i, __pyx_v_p, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 354; __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_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":355 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":355   *                 p = p + 1   *         self.qsort(i,p, pad+"    ")   *         self.qsort(p+1,j, pad+"    ")             # <<<<<<<<<<<<<<   *    *    */ -  __pyx_t_4 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_BiLex *)__pyx_v_self->__pyx_vtab)->qsort(__pyx_v_self, (__pyx_v_p + 1), __pyx_v_j, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -16903,11 +17437,14 @@ static PyObject *__pyx_f_3_sa_5BiLex_qsort(struct __pyx_obj_3_sa_BiLex *__pyx_v_  static PyObject *__pyx_pw_3_sa_5BiLex_13write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_5BiLex_13write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -16920,7 +17457,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_13write_enhanced(PyObject *__pyx_v_self, P    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":358 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":358   *    *    *     def write_enhanced(self, char* filename):             # <<<<<<<<<<<<<< @@ -16957,7 +17494,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_enhanced", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":359 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -16965,7 +17502,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL   *                 f.write("%d " % i)   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); @@ -16978,9 +17515,9 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL      __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -16997,7 +17534,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":360 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":360   *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:   *             for i in self.f_index:             # <<<<<<<<<<<<<< @@ -17015,10 +17552,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_1 = __pyx_t_9(__pyx_t_4);                if (unlikely(!__pyx_t_1)) { @@ -17034,16 +17579,16 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __pyx_v_i = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":361 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":361   *         with open(filename, "w") as f:   *             for i in self.f_index:   *                 f.write("%d " % i)             # <<<<<<<<<<<<<<   *             f.write("\n")   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_2));              __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10); @@ -17058,21 +17603,21 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            }            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":362 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":362   *             for i in self.f_index:   *                 f.write("%d " % i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   *                 f.write("%d %f %f " % (i, s1, s2))   */ -          __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_49), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_51), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":363 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":363   *                 f.write("%d " % i)   *             f.write("\n")   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):             # <<<<<<<<<<<<<< @@ -17105,10 +17650,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_4 = __pyx_t_9(__pyx_t_2);                if (unlikely(!__pyx_t_4)) { @@ -17122,21 +17675,22 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              }              if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {                PyObject* sequence = __pyx_t_4; +              #if CYTHON_COMPILING_IN_CPYTHON +              Py_ssize_t size = Py_SIZE(sequence); +              #else +              Py_ssize_t size = PySequence_Size(sequence); +              #endif +              if (unlikely(size != 3)) { +                if (size > 3) __Pyx_RaiseTooManyValuesError(3); +                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              } +              #if CYTHON_COMPILING_IN_CPYTHON                if (likely(PyTuple_CheckExact(sequence))) { -                if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -                  if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -                  else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0);                   __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);                   __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);                 } else { -                if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -                  if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -                  else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -                }                  __pyx_t_10 = PyList_GET_ITEM(sequence, 0);                   __pyx_t_1 = PyList_GET_ITEM(sequence, 1);                   __pyx_t_11 = PyList_GET_ITEM(sequence, 2);  @@ -17144,8 +17698,17 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL                __Pyx_INCREF(__pyx_t_10);                __Pyx_INCREF(__pyx_t_1);                __Pyx_INCREF(__pyx_t_11); +              #else +              __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __Pyx_GOTREF(__pyx_t_10); +              __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __Pyx_GOTREF(__pyx_t_1); +              __pyx_t_11 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __Pyx_GOTREF(__pyx_t_11); +              #endif                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -            } else { +            } else +            {                Py_ssize_t index = -1;                __pyx_t_12 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_12); @@ -17158,12 +17721,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL                index = 2; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L20_unpacking_failed;                __Pyx_GOTREF(__pyx_t_11);                if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 3) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              __pyx_t_13 = NULL;                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;                goto __pyx_L21_unpacking_done;                __pyx_L20_unpacking_failed:;                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -              if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +              __pyx_t_13 = NULL; +              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __pyx_L21_unpacking_done:;              } @@ -17177,14 +17741,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __pyx_v_s2 = __pyx_t_11;              __pyx_t_11 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":364 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":364   *             f.write("\n")   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   *                 f.write("%d %f %f " % (i, s1, s2))             # <<<<<<<<<<<<<<   *             f.write("\n")   *             for i, w in enumerate(self.id2fword):   */ -            __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4);              __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_11); @@ -17197,7 +17761,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __Pyx_INCREF(__pyx_v_s2);              PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_v_s2);              __Pyx_GIVEREF(__pyx_v_s2); -            __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_50), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_52), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_1));              __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;              __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_error;} @@ -17213,21 +17777,21 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            }            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":365 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":365   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   *                 f.write("%d %f %f " % (i, s1, s2))   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, w in enumerate(self.id2fword):   *                 f.write("%d %s " % (i, w))   */ -          __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); -          __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_51), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_53), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_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/paulb/workspace/cdec/python/src/sa/bilex.pxi":366 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":366   *                 f.write("%d %f %f " % (i, s1, s2))   *             f.write("\n")   *             for i, w in enumerate(self.id2fword):             # <<<<<<<<<<<<<< @@ -17247,10 +17811,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_11 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_11 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_11 = __pyx_t_9(__pyx_t_2);                if (unlikely(!__pyx_t_11)) { @@ -17274,14 +17846,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __pyx_t_1 = __pyx_t_11;              __pyx_t_11 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":367 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":367   *             f.write("\n")   *             for i, w in enumerate(self.id2fword):   *                 f.write("%d %s " % (i, w))             # <<<<<<<<<<<<<<   *             f.write("\n")   *             for i, w in enumerate(self.id2eword):   */ -            __pyx_t_11 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_11);              __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4); @@ -17291,7 +17863,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __Pyx_INCREF(__pyx_v_w);              PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_w);              __Pyx_GIVEREF(__pyx_v_w); -            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_52), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_10));              __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;              __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L7_error;} @@ -17308,21 +17880,21 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":368 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":368   *             for i, w in enumerate(self.id2fword):   *                 f.write("%d %s " % (i, w))   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, w in enumerate(self.id2eword):   *                 f.write("%d %s " % (i, w))   */ -          __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1); -          __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_53), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_55), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_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/paulb/workspace/cdec/python/src/sa/bilex.pxi":369 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":369   *                 f.write("%d %s " % (i, w))   *             f.write("\n")   *             for i, w in enumerate(self.id2eword):             # <<<<<<<<<<<<<< @@ -17342,10 +17914,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_10 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_10 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_10 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -              __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_10 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_10 = __pyx_t_9(__pyx_t_1);                if (unlikely(!__pyx_t_10)) { @@ -17369,14 +17949,14 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __pyx_t_2 = __pyx_t_10;              __pyx_t_10 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":370 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":370   *             f.write("\n")   *             for i, w in enumerate(self.id2eword):   *                 f.write("%d %s " % (i, w))             # <<<<<<<<<<<<<<   *             f.write("\n")   *    */ -            __pyx_t_10 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10);              __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4); @@ -17386,7 +17966,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL              __Pyx_INCREF(__pyx_v_w);              PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_w);              __Pyx_GIVEREF(__pyx_v_w); -            __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_52), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_54), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_11));              __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;              __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L7_error;} @@ -17403,16 +17983,16 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":371 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":371   *             for i, w in enumerate(self.id2eword):   *                 f.write("%d %s " % (i, w))   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *    */ -          __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); -          __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_54), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_56), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -17429,7 +18009,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":359 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -17459,8 +18039,8 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL            __Pyx_GOTREF(__pyx_t_15);            __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_15);            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -          if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_16 = (!__pyx_t_14); +          if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_16 = ((!(__pyx_t_14 != 0)) != 0);            if (__pyx_t_16) {              __Pyx_GIVEREF(__pyx_t_1);              __Pyx_GIVEREF(__pyx_t_2); @@ -17493,13 +18073,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_12write_enhanced(struct __pyx_obj_3_sa_BiL      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_55, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_57, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_16 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L29; @@ -17537,11 +18117,14 @@ static PyObject *__pyx_pw_3_sa_5BiLex_15get_score(PyObject *__pyx_v_self, PyObje    PyObject *__pyx_v_fword = 0;    PyObject *__pyx_v_eword = 0;    PyObject *__pyx_v_col = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fword,&__pyx_n_s__eword,&__pyx_n_s__col,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("get_score (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fword,&__pyx_n_s__eword,&__pyx_n_s__col,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -17556,18 +18139,15 @@ static PyObject *__pyx_pw_3_sa_5BiLex_15get_score(PyObject *__pyx_v_self, PyObje        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fword); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fword)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__eword); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__eword)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_score", 1, 3, 3, 1); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__col); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__col)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_score", 1, 3, 3, 2); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -17599,7 +18179,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_15get_score(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":374 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":374   *    *    *     def get_score(self, fword, eword, col):             # <<<<<<<<<<<<<< @@ -17617,25 +18197,27 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; -  Py_ssize_t __pyx_t_3; -  PyObject *__pyx_t_4 = NULL; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL; +  Py_ssize_t __pyx_t_4; +  PyObject *__pyx_t_5 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_score", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":377 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":377   *         cdef e_id, f_id, low, high, midpoint, val   *    *         if eword not in self.eword2id:             # <<<<<<<<<<<<<<   *             return None   *         if fword not in self.fword2id:   */ -  __pyx_t_1 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self->eword2id, __pyx_v_eword))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_eword, __pyx_v_self->eword2id, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":378 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":378   *    *         if eword not in self.eword2id:   *             return None             # <<<<<<<<<<<<<< @@ -17650,17 +18232,18 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":379 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":379   *         if eword not in self.eword2id:   *             return None   *         if fword not in self.fword2id:             # <<<<<<<<<<<<<<   *             return None   *         f_id = self.fword2id[fword]   */ -  __pyx_t_1 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self->fword2id, __pyx_v_fword))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_fword, __pyx_v_self->fword2id, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = (__pyx_t_2 != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":380 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":380   *             return None   *         if fword not in self.fword2id:   *             return None             # <<<<<<<<<<<<<< @@ -17675,60 +18258,60 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":381 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":381   *         if fword not in self.fword2id:   *             return None   *         f_id = self.fword2id[fword]             # <<<<<<<<<<<<<<   *         e_id = self.eword2id[eword]   *         low = self.f_index.arr[f_id]   */ -  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_f_id = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->fword2id, __pyx_v_fword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_v_f_id = __pyx_t_3; +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":382 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":382   *             return None   *         f_id = self.fword2id[fword]   *         e_id = self.eword2id[eword]             # <<<<<<<<<<<<<<   *         low = self.f_index.arr[f_id]   *         high = self.f_index.arr[f_id+1]   */ -  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_e_id = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->eword2id, __pyx_v_eword); if (!__pyx_t_3) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_v_e_id = __pyx_t_3; +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":383 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":383   *         f_id = self.fword2id[fword]   *         e_id = self.eword2id[eword]   *         low = self.f_index.arr[f_id]             # <<<<<<<<<<<<<<   *         high = self.f_index.arr[f_id+1]   *         while high - low > 0:   */ -  __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_2 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_3])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_low = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_id); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_v_low = __pyx_t_3; +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":384 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":384   *         e_id = self.eword2id[eword]   *         low = self.f_index.arr[f_id]   *         high = self.f_index.arr[f_id+1]             # <<<<<<<<<<<<<<   *         while high - low > 0:   *             midpoint = (low+high)/2   */ -  __pyx_t_2 = PyNumber_Add(__pyx_v_f_id, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __pyx_t_2 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_3])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_high = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyNumber_Add(__pyx_v_f_id, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +  __pyx_t_3 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_v_high = __pyx_t_3; +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":385 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":385   *         low = self.f_index.arr[f_id]   *         high = self.f_index.arr[f_id+1]   *         while high - low > 0:             # <<<<<<<<<<<<<< @@ -17736,72 +18319,69 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_   *             val = self.e_index.arr[midpoint]   */    while (1) { -    __pyx_t_2 = PyNumber_Subtract(__pyx_v_high, __pyx_v_low); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __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[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_3 = PyNumber_Subtract(__pyx_v_high, __pyx_v_low); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      if (!__pyx_t_1) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":386 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":386   *         high = self.f_index.arr[f_id+1]   *         while high - low > 0:   *             midpoint = (low+high)/2             # <<<<<<<<<<<<<<   *             val = self.e_index.arr[midpoint]   *             if val == e_id:   */ -    __pyx_t_4 = PyNumber_Add(__pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_int_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_5 = PyNumber_Add(__pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_XDECREF(__pyx_v_midpoint); -    __pyx_v_midpoint = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_v_midpoint = __pyx_t_3; +    __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":387 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":387   *         while high - low > 0:   *             midpoint = (low+high)/2   *             val = self.e_index.arr[midpoint]             # <<<<<<<<<<<<<<   *             if val == e_id:   *                 if col == 0:   */ -    __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = PyInt_FromLong((__pyx_v_self->e_index->arr[__pyx_t_3])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyInt_FromLong((__pyx_v_self->e_index->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_XDECREF(__pyx_v_val); -    __pyx_v_val = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_v_val = __pyx_t_3; +    __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":388 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":388   *             midpoint = (low+high)/2   *             val = self.e_index.arr[midpoint]   *             if val == e_id:             # <<<<<<<<<<<<<<   *                 if col == 0:   *                     return self.col1.arr[midpoint]   */ -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 388; __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[5]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":389 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":389   *             val = self.e_index.arr[midpoint]   *             if val == e_id:   *                 if col == 0:             # <<<<<<<<<<<<<<   *                     return self.col1.arr[midpoint]   *                 if col == 1:   */ -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_col, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 389; __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[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_3 = PyObject_RichCompare(__pyx_v_col, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":390 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":390   *             if val == e_id:   *                 if col == 0:   *                     return self.col1.arr[midpoint]             # <<<<<<<<<<<<<< @@ -17809,30 +18389,29 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_   *                     return self.col2.arr[midpoint]   */          __Pyx_XDECREF(__pyx_r); -        __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->col1->arr[__pyx_t_3])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __pyx_r = __pyx_t_2; -        __pyx_t_2 = 0; +        __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = PyFloat_FromDouble((__pyx_v_self->col1->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 390; __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_L8;        }        __pyx_L8:; -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":391 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":391   *                 if col == 0:   *                     return self.col1.arr[midpoint]   *                 if col == 1:             # <<<<<<<<<<<<<<   *                     return self.col2.arr[midpoint]   *             if val > e_id:   */ -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_col, __pyx_int_1, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 391; __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[5]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_3 = PyObject_RichCompare(__pyx_v_col, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":392 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":392   *                     return self.col1.arr[midpoint]   *                 if col == 1:   *                     return self.col2.arr[midpoint]             # <<<<<<<<<<<<<< @@ -17840,11 +18419,11 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_   *                 high = midpoint   */          __Pyx_XDECREF(__pyx_r); -        __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->col2->arr[__pyx_t_3])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __pyx_r = __pyx_t_2; -        __pyx_t_2 = 0; +        __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_midpoint); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = PyFloat_FromDouble((__pyx_v_self->col2->arr[__pyx_t_4])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 392; __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;        } @@ -17853,20 +18432,19 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":393 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":393   *                 if col == 1:   *                     return self.col2.arr[midpoint]   *             if val > e_id:             # <<<<<<<<<<<<<<   *                 high = midpoint   *             if val < e_id:   */ -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 393; __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[5]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":394 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":394   *                     return self.col2.arr[midpoint]   *             if val > e_id:   *                 high = midpoint             # <<<<<<<<<<<<<< @@ -17880,37 +18458,36 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_      }      __pyx_L10:; -    /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":395 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":395   *             if val > e_id:   *                 high = midpoint   *             if val < e_id:             # <<<<<<<<<<<<<<   *                 low = midpoint + 1   *         return None   */ -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 395; __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[5]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_e_id, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":396 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":396   *                 high = midpoint   *             if val < e_id:   *                 low = midpoint + 1             # <<<<<<<<<<<<<<   *         return None   *    */ -      __pyx_t_2 = PyNumber_Add(__pyx_v_midpoint, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = PyNumber_Add(__pyx_v_midpoint, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_low); -      __pyx_v_low = __pyx_t_2; -      __pyx_t_2 = 0; +      __pyx_v_low = __pyx_t_3; +      __pyx_t_3 = 0;        goto __pyx_L11;      }      __pyx_L11:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":397 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":397   *             if val < e_id:   *                 low = midpoint + 1   *         return None             # <<<<<<<<<<<<<< @@ -17925,8 +18502,8 @@ static PyObject *__pyx_pf_3_sa_5BiLex_14get_score(struct __pyx_obj_3_sa_BiLex *_    __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_3); +  __Pyx_XDECREF(__pyx_t_5);    __Pyx_AddTraceback("_sa.BiLex.get_score", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -17946,11 +18523,14 @@ static PyObject *__pyx_pw_3_sa_5BiLex_17write_text(PyObject *__pyx_v_self, PyObj  static char __pyx_doc_3_sa_5BiLex_16write_text[] = "Note: does not guarantee writing the dictionary in the original order";  static PyObject *__pyx_pw_3_sa_5BiLex_17write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -17963,7 +18543,7 @@ static PyObject *__pyx_pw_3_sa_5BiLex_17write_text(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":400 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":400   *    *    *     def write_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -18000,7 +18580,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":404 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404   *         cdef i, N, e_id, f_id   *    *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -18008,7 +18588,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *   *             f_id = 0   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); @@ -18021,9 +18601,9 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *      __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -18040,7 +18620,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":405 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":405   *    *         with open(filename, "w") as f:   *             N = len(self.e_index)             # <<<<<<<<<<<<<< @@ -18056,7 +18636,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *            __pyx_v_N = __pyx_t_4;            __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":406 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":406   *         with open(filename, "w") as f:   *             N = len(self.e_index)   *             f_id = 0             # <<<<<<<<<<<<<< @@ -18066,7 +18646,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *            __Pyx_INCREF(__pyx_int_0);            __pyx_v_f_id = __pyx_int_0; -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":407 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":407   *             N = len(self.e_index)   *             f_id = 0   *             for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -18081,7 +18661,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __pyx_v_i = __pyx_t_4;              __pyx_t_4 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":408 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":408   *             f_id = 0   *             for i from 0 <= i < N:   *                 while self.f_index.arr[f_id+1] == i:             # <<<<<<<<<<<<<< @@ -18095,14 +18675,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;                __pyx_t_4 = PyInt_FromLong((__pyx_v_self->f_index->arr[__pyx_t_8])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_GOTREF(__pyx_t_4); -              __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_v_i, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;} -              __Pyx_GOTREF(__pyx_t_1); +              __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_v_i, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;                __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L7_error;}                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                if (!__pyx_t_11) break; -              /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":409 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":409   *             for i from 0 <= i < N:   *                 while self.f_index.arr[f_id+1] == i:   *                     f_id = f_id + 1             # <<<<<<<<<<<<<< @@ -18116,7 +18695,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *                __pyx_t_1 = 0;              } -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":410 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":410   *                 while self.f_index.arr[f_id+1] == i:   *                     f_id = f_id + 1   *                 e_id = self.e_index.arr[i]             # <<<<<<<<<<<<<< @@ -18130,7 +18709,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __pyx_v_e_id = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":411 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":411   *                     f_id = f_id + 1   *                 e_id = self.e_index.arr[i]   *                 score1 = self.col1.arr[i]             # <<<<<<<<<<<<<< @@ -18144,7 +18723,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __pyx_v_score1 = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":412 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":412   *                 e_id = self.e_index.arr[i]   *                 score1 = self.col1.arr[i]   *                 score2 = self.col2.arr[i]             # <<<<<<<<<<<<<< @@ -18157,12 +18736,12 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __pyx_v_score2 = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":413 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":413   *                 score1 = self.col1.arr[i]   *                 score2 = self.col2.arr[i]   *                 f.write("%s %s %.6f %.6f\n" % (self.id2fword[f_id], self.id2eword[e_id], score1, score2))             # <<<<<<<<<<<<<<   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1);              __pyx_t_4 = PyObject_GetItem(__pyx_v_self->id2fword, __pyx_v_f_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_4); @@ -18182,7 +18761,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __Pyx_GIVEREF(__pyx_v_score2);              __pyx_t_4 = 0;              __pyx_t_2 = 0; -            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_56), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_58), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_2));              __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;              __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;} @@ -18198,7 +18777,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *              __pyx_t_10 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            } -          /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":407 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":407   *             N = len(self.e_index)   *             f_id = 0   *             for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -18221,7 +18800,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":404 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404   *         cdef i, N, e_id, f_id   *    *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -18251,8 +18830,8 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *            __Pyx_GOTREF(__pyx_t_13);            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_13);            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -          if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_14 = (!__pyx_t_11); +          if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_14 = ((!(__pyx_t_11 != 0)) != 0);            if (__pyx_t_14) {              __Pyx_GIVEREF(__pyx_t_2);              __Pyx_GIVEREF(__pyx_t_12); @@ -18285,13 +18864,13 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_57, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_59, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_14 < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L23; @@ -18323,7 +18902,7 @@ static PyObject *__pyx_pf_3_sa_5BiLex_16write_text(struct __pyx_obj_3_sa_BiLex *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":21 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":21   * cdef int LOWER_MASK[32]   *    * cdef void _init_lower_mask():             # <<<<<<<<<<<<<< @@ -18339,7 +18918,7 @@ static void __pyx_f_3_sa__init_lower_mask(void) {    unsigned int __pyx_t_2;    __Pyx_RefNannySetupContext("_init_lower_mask", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":23   * cdef void _init_lower_mask():   *     cdef unsigned i   *     cdef int mask = 0             # <<<<<<<<<<<<<< @@ -18348,7 +18927,7 @@ static void __pyx_f_3_sa__init_lower_mask(void) {   */    __pyx_v_mask = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":24 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":24   *     cdef unsigned i   *     cdef int mask = 0   *     for i in range(MIN_BOTTOM_SIZE):             # <<<<<<<<<<<<<< @@ -18359,7 +18938,7 @@ static void __pyx_f_3_sa__init_lower_mask(void) {    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_v_i = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":25 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":25   *     cdef int mask = 0   *     for i in range(MIN_BOTTOM_SIZE):   *         mask = (mask << 1) + 1             # <<<<<<<<<<<<<< @@ -18368,7 +18947,7 @@ static void __pyx_f_3_sa__init_lower_mask(void) {   */      __pyx_v_mask = ((__pyx_v_mask << 1) + 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":26 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":26   *     for i in range(MIN_BOTTOM_SIZE):   *         mask = (mask << 1) + 1   *         LOWER_MASK[i] = mask             # <<<<<<<<<<<<<< @@ -18381,7 +18960,7 @@ static void __pyx_f_3_sa__init_lower_mask(void) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":37 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":37   *    *    * cdef _BitSet* new_BitSet():             # <<<<<<<<<<<<<< @@ -18395,7 +18974,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("new_BitSet", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":40   *     cdef _BitSet* b   *    *     b = <_BitSet*> malloc(sizeof(_BitSet))             # <<<<<<<<<<<<<< @@ -18404,7 +18983,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {   */    __pyx_v_b = ((struct __pyx_t_3_sa__BitSet *)malloc((sizeof(struct __pyx_t_3_sa__BitSet)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":41   *    *     b = <_BitSet*> malloc(sizeof(_BitSet))   *     b.bitset = 0             # <<<<<<<<<<<<<< @@ -18413,7 +18992,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {   */    __pyx_v_b->bitset = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":42 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":42   *     b = <_BitSet*> malloc(sizeof(_BitSet))   *     b.bitset = 0   *     b.min_val = -1             # <<<<<<<<<<<<<< @@ -18422,7 +19001,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {   */    __pyx_v_b->min_val = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":43   *     b.bitset = 0   *     b.min_val = -1   *     b.max_val = -1             # <<<<<<<<<<<<<< @@ -18431,7 +19010,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {   */    __pyx_v_b->max_val = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":44 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":44   *     b.min_val = -1   *     b.max_val = -1   *     b.size = 0             # <<<<<<<<<<<<<< @@ -18440,7 +19019,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {   */    __pyx_v_b->size = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":45 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":45   *     b.max_val = -1   *     b.size = 0   *     return b             # <<<<<<<<<<<<<< @@ -18456,7 +19035,7 @@ static struct __pyx_t_3_sa__BitSet *__pyx_f_3_sa_new_BitSet(void) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":48 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":48   *    *    * cdef int bitset_findsucc(_BitSet* b, int i):             # <<<<<<<<<<<<<< @@ -18477,23 +19056,23 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    int __pyx_t_3;    __Pyx_RefNannySetupContext("bitset_findsucc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":52 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":52   *     cdef int low, high, mid   *    *     if b.max_val == -1 or i >= b.max_val:             # <<<<<<<<<<<<<<   *         return -1   *     if i < b.min_val:   */ -  __pyx_t_1 = (__pyx_v_b->max_val == -1); +  __pyx_t_1 = ((__pyx_v_b->max_val == -1) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_i >= __pyx_v_b->max_val); +    __pyx_t_2 = ((__pyx_v_i >= __pyx_v_b->max_val) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":53 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":53   *    *     if b.max_val == -1 or i >= b.max_val:   *         return -1             # <<<<<<<<<<<<<< @@ -18506,17 +19085,17 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":54   *     if b.max_val == -1 or i >= b.max_val:   *         return -1   *     if i < b.min_val:             # <<<<<<<<<<<<<<   *         return b.min_val   *    */ -  __pyx_t_3 = (__pyx_v_i < __pyx_v_b->min_val); +  __pyx_t_3 = ((__pyx_v_i < __pyx_v_b->min_val) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":55 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":55   *         return -1   *     if i < b.min_val:   *         return b.min_val             # <<<<<<<<<<<<<< @@ -18529,7 +19108,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":57   *         return b.min_val   *    *     bitset = b.bitset & ~LOWER_MASK[i]             # <<<<<<<<<<<<<< @@ -18538,7 +19117,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */    __pyx_v_bitset = (__pyx_v_b->bitset & (~(__pyx_v_3_sa_LOWER_MASK[__pyx_v_i]))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":58 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":58   *    *     bitset = b.bitset & ~LOWER_MASK[i]   *     low = i+1             # <<<<<<<<<<<<<< @@ -18547,7 +19126,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */    __pyx_v_low = (__pyx_v_i + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":59   *     bitset = b.bitset & ~LOWER_MASK[i]   *     low = i+1   *     high = b.max_val+1             # <<<<<<<<<<<<<< @@ -18556,7 +19135,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */    __pyx_v_high = (__pyx_v_b->max_val + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":60 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":60   *     low = i+1   *     high = b.max_val+1   *     while low < high-1:             # <<<<<<<<<<<<<< @@ -18564,10 +19143,10 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   *         mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])   */    while (1) { -    __pyx_t_3 = (__pyx_v_low < (__pyx_v_high - 1)); +    __pyx_t_3 = ((__pyx_v_low < (__pyx_v_high - 1)) != 0);      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":61 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":61   *     high = b.max_val+1   *     while low < high-1:   *         mid = (high + low)/2             # <<<<<<<<<<<<<< @@ -18576,7 +19155,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */      __pyx_v_mid = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":62 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":62   *     while low < high-1:   *         mid = (high + low)/2   *         mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])             # <<<<<<<<<<<<<< @@ -18585,17 +19164,17 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */      __pyx_v_mask = (~((__pyx_v_3_sa_LOWER_MASK[(__pyx_v_high - 1)]) ^ (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_mid - 1)]))); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":63 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":63   *         mid = (high + low)/2   *         mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])   *         if bitset & mask == 0:             # <<<<<<<<<<<<<<   *             low = mid   *         else:   */ -    __pyx_t_3 = ((__pyx_v_bitset & __pyx_v_mask) == 0); +    __pyx_t_3 = (((__pyx_v_bitset & __pyx_v_mask) == 0) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":64 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":64   *         mask = ~(LOWER_MASK[high-1] ^ LOWER_MASK[mid-1])   *         if bitset & mask == 0:   *             low = mid             # <<<<<<<<<<<<<< @@ -18607,7 +19186,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":66 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":66   *             low = mid   *         else:   *             bitset = bitset & mask             # <<<<<<<<<<<<<< @@ -18616,7 +19195,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */        __pyx_v_bitset = (__pyx_v_bitset & __pyx_v_mask); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":67 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":67   *         else:   *             bitset = bitset & mask   *             high = mid             # <<<<<<<<<<<<<< @@ -18628,7 +19207,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,      __pyx_L7:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":68 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":68   *             bitset = bitset & mask   *             high = mid   *     return low             # <<<<<<<<<<<<<< @@ -18644,7 +19223,7 @@ static int __pyx_f_3_sa_bitset_findsucc(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":71 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":71   *    *    * cdef int bitset_insert(_BitSet* b, int i):             # <<<<<<<<<<<<<< @@ -18659,7 +19238,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in    int __pyx_t_1;    __Pyx_RefNannySetupContext("bitset_insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":74 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":74   *     cdef int val   *    *     val = 1 << i             # <<<<<<<<<<<<<< @@ -18668,17 +19247,17 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in   */    __pyx_v_val = (1 << __pyx_v_i); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":75 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":75   *    *     val = 1 << i   *     if b.bitset & val == 0:             # <<<<<<<<<<<<<<   *         b.bitset = b.bitset | val   *         if b.size == 0:   */ -  __pyx_t_1 = ((__pyx_v_b->bitset & __pyx_v_val) == 0); +  __pyx_t_1 = (((__pyx_v_b->bitset & __pyx_v_val) == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":76 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":76   *     val = 1 << i   *     if b.bitset & val == 0:   *         b.bitset = b.bitset | val             # <<<<<<<<<<<<<< @@ -18687,17 +19266,17 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in   */      __pyx_v_b->bitset = (__pyx_v_b->bitset | __pyx_v_val); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":77 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":77   *     if b.bitset & val == 0:   *         b.bitset = b.bitset | val   *         if b.size == 0:             # <<<<<<<<<<<<<<   *             b.min_val = i   *             b.max_val = i   */ -    __pyx_t_1 = (__pyx_v_b->size == 0); +    __pyx_t_1 = ((__pyx_v_b->size == 0) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":78 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":78   *         b.bitset = b.bitset | val   *         if b.size == 0:   *             b.min_val = i             # <<<<<<<<<<<<<< @@ -18706,7 +19285,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in   */        __pyx_v_b->min_val = __pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":79 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":79   *         if b.size == 0:   *             b.min_val = i   *             b.max_val = i             # <<<<<<<<<<<<<< @@ -18718,17 +19297,17 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":81 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":81   *             b.max_val = i   *         else:   *             if i < b.min_val:             # <<<<<<<<<<<<<<   *                 b.min_val = i   *             if i > b.max_val:   */ -      __pyx_t_1 = (__pyx_v_i < __pyx_v_b->min_val); +      __pyx_t_1 = ((__pyx_v_i < __pyx_v_b->min_val) != 0);        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":82 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":82   *         else:   *             if i < b.min_val:   *                 b.min_val = i             # <<<<<<<<<<<<<< @@ -18740,17 +19319,17 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in        }        __pyx_L5:; -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":83 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":83   *             if i < b.min_val:   *                 b.min_val = i   *             if i > b.max_val:             # <<<<<<<<<<<<<<   *                 b.max_val = i   *         b.size = b.size + 1   */ -      __pyx_t_1 = (__pyx_v_i > __pyx_v_b->max_val); +      __pyx_t_1 = ((__pyx_v_i > __pyx_v_b->max_val) != 0);        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":84 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":84   *                 b.min_val = i   *             if i > b.max_val:   *                 b.max_val = i             # <<<<<<<<<<<<<< @@ -18764,7 +19343,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":85 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":85   *             if i > b.max_val:   *                 b.max_val = i   *         b.size = b.size + 1             # <<<<<<<<<<<<<< @@ -18773,7 +19352,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in   */      __pyx_v_b->size = (__pyx_v_b->size + 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":86 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":86   *                 b.max_val = i   *         b.size = b.size + 1   *         return 1             # <<<<<<<<<<<<<< @@ -18786,7 +19365,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":87 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":87   *         b.size = b.size + 1   *         return 1   *     return 0             # <<<<<<<<<<<<<< @@ -18802,7 +19381,7 @@ static int __pyx_f_3_sa_bitset_insert(struct __pyx_t_3_sa__BitSet *__pyx_v_b, in    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":90 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":90   *    *    * cdef int bitset_contains(_BitSet* b, int i):             # <<<<<<<<<<<<<< @@ -18817,7 +19396,7 @@ static int __pyx_f_3_sa_bitset_contains(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    int __pyx_t_1;    __Pyx_RefNannySetupContext("bitset_contains", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":93 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":93   *     cdef int val   *    *     val = 1 << i             # <<<<<<<<<<<<<< @@ -18826,17 +19405,17 @@ static int __pyx_f_3_sa_bitset_contains(struct __pyx_t_3_sa__BitSet *__pyx_v_b,   */    __pyx_v_val = (1 << __pyx_v_i); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":94 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":94   *    *     val = 1 << i   *     if b.bitset & val == 0:             # <<<<<<<<<<<<<<   *         return 0   *     else:   */ -  __pyx_t_1 = ((__pyx_v_b->bitset & __pyx_v_val) == 0); +  __pyx_t_1 = (((__pyx_v_b->bitset & __pyx_v_val) == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":95 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":95   *     val = 1 << i   *     if b.bitset & val == 0:   *         return 0             # <<<<<<<<<<<<<< @@ -18849,7 +19428,7 @@ static int __pyx_f_3_sa_bitset_contains(struct __pyx_t_3_sa__BitSet *__pyx_v_b,    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":97 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":97   *         return 0   *     else:   *         return 1             # <<<<<<<<<<<<<< @@ -18878,7 +19457,7 @@ static PyObject *__pyx_pw_3_sa_14BitSetIterator_1__next__(PyObject *__pyx_v_self    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":104 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":104   *     cdef int next_val   *    *     def __next__(self):             # <<<<<<<<<<<<<< @@ -18892,22 +19471,23 @@ static PyObject *__pyx_pf_3_sa_14BitSetIterator___next__(struct __pyx_obj_3_sa_B    __Pyx_RefNannyDeclarations    int __pyx_t_1;    PyObject *__pyx_t_2 = NULL; +  int __pyx_t_3;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__next__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":107 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":107   *         cdef int ret_val   *    *         if self.next_val == -1:             # <<<<<<<<<<<<<<   *             raise StopIteration()   *         ret_val = self.next_val   */ -  __pyx_t_1 = (__pyx_v_self->next_val == -1); +  __pyx_t_1 = ((__pyx_v_self->next_val == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":108 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":108   *    *         if self.next_val == -1:   *             raise StopIteration()             # <<<<<<<<<<<<<< @@ -18923,16 +19503,17 @@ static PyObject *__pyx_pf_3_sa_14BitSetIterator___next__(struct __pyx_obj_3_sa_B    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":109 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":109   *         if self.next_val == -1:   *             raise StopIteration()   *         ret_val = self.next_val             # <<<<<<<<<<<<<<   *         self.next_val = bitset_findsucc(self.b, ret_val)   *         return ret_val   */ -  __pyx_v_ret_val = __pyx_v_self->next_val; +  __pyx_t_3 = __pyx_v_self->next_val; +  __pyx_v_ret_val = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":110 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":110   *             raise StopIteration()   *         ret_val = self.next_val   *         self.next_val = bitset_findsucc(self.b, ret_val)             # <<<<<<<<<<<<<< @@ -18941,7 +19522,7 @@ static PyObject *__pyx_pf_3_sa_14BitSetIterator___next__(struct __pyx_obj_3_sa_B   */    __pyx_v_self->next_val = __pyx_f_3_sa_bitset_findsucc(__pyx_v_self->b, __pyx_v_ret_val); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":111 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":111   *         ret_val = self.next_val   *         self.next_val = bitset_findsucc(self.b, ret_val)   *         return ret_val             # <<<<<<<<<<<<<< @@ -18981,7 +19562,7 @@ static int __pyx_pw_3_sa_6BitSet_1__cinit__(PyObject *__pyx_v_self, PyObject *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":122 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":122   *     cdef _BitSet* b   *    *     def __cinit__(self):             # <<<<<<<<<<<<<< @@ -18994,7 +19575,7 @@ static int __pyx_pf_3_sa_6BitSet___cinit__(struct __pyx_obj_3_sa_BitSet *__pyx_v    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":123 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":123   *    *     def __cinit__(self):   *         self.b = new_BitSet()             # <<<<<<<<<<<<<< @@ -19017,7 +19598,7 @@ static void __pyx_pw_3_sa_6BitSet_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":125 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":125   *         self.b = new_BitSet()   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -19029,7 +19610,7 @@ static void __pyx_pf_3_sa_6BitSet_2__dealloc__(struct __pyx_obj_3_sa_BitSet *__p    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":126 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":126   *    *     def __dealloc__(self):   *         free(self.b)             # <<<<<<<<<<<<<< @@ -19052,7 +19633,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_5__iter__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":128 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":128   *         free(self.b)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -19065,12 +19646,14 @@ static PyObject *__pyx_pf_3_sa_6BitSet_4__iter__(struct __pyx_obj_3_sa_BitSet *_    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    PyObject *__pyx_t_1 = NULL; +  struct __pyx_t_3_sa__BitSet *__pyx_t_2; +  int __pyx_t_3;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__iter__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":130 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":130   *     def __iter__(self):   *         cdef BitSetIterator it   *         it = BitSetIterator()             # <<<<<<<<<<<<<< @@ -19082,25 +19665,27 @@ static PyObject *__pyx_pf_3_sa_6BitSet_4__iter__(struct __pyx_obj_3_sa_BitSet *_    __pyx_v_it = ((struct __pyx_obj_3_sa_BitSetIterator *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":131 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":131   *         cdef BitSetIterator it   *         it = BitSetIterator()   *         it.b = self.b             # <<<<<<<<<<<<<<   *         it.next_val = self.b.min_val   *         return it   */ -  __pyx_v_it->b = __pyx_v_self->b; +  __pyx_t_2 = __pyx_v_self->b; +  __pyx_v_it->b = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":132 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":132   *         it = BitSetIterator()   *         it.b = self.b   *         it.next_val = self.b.min_val             # <<<<<<<<<<<<<<   *         return it   *    */ -  __pyx_v_it->next_val = __pyx_v_self->b->min_val; +  __pyx_t_3 = __pyx_v_self->b->min_val; +  __pyx_v_it->next_val = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":133 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":133   *         it.b = self.b   *         it.next_val = self.b.min_val   *         return it             # <<<<<<<<<<<<<< @@ -19136,7 +19721,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_7insert(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":135 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":135   *         return it   *    *     def insert(self, i):             # <<<<<<<<<<<<<< @@ -19154,7 +19739,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_6insert(struct __pyx_obj_3_sa_BitSet *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":136 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":136   *    *     def insert(self, i):   *         return bitset_insert(self.b, i)             # <<<<<<<<<<<<<< @@ -19192,7 +19777,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_9findsucc(PyObject *__pyx_v_self, PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":138 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":138   *         return bitset_insert(self.b, i)   *    *     def findsucc(self, i):             # <<<<<<<<<<<<<< @@ -19210,7 +19795,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_8findsucc(struct __pyx_obj_3_sa_BitSet *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("findsucc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":139 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":139   *    *     def findsucc(self, i):   *         return bitset_findsucc(self.b, i)             # <<<<<<<<<<<<<< @@ -19248,7 +19833,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_11__str__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":141 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":141   *         return bitset_findsucc(self.b, i)   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -19267,7 +19852,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_10__str__(struct __pyx_obj_3_sa_BitSet *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__str__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":142 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":142   *    *     def __str__(self):   *         return dec2bin(self.b.bitset)+"  ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")"             # <<<<<<<<<<<<<< @@ -19277,7 +19862,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_10__str__(struct __pyx_obj_3_sa_BitSet *_    __Pyx_XDECREF(__pyx_r);    __pyx_t_1 = ((PyObject *)__pyx_f_3_sa_dec2bin(__pyx_v_self->b->bitset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_58)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_60)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2));    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_t_1 = PyInt_FromLong(__pyx_v_self->b->size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -19328,7 +19913,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_10__str__(struct __pyx_obj_3_sa_BitSet *_    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_59)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_kp_s_61)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 142; __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; @@ -19360,7 +19945,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_13min(PyObject *__pyx_v_self, CYTHON_UNUS    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":144 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":144   *         return dec2bin(self.b.bitset)+"  ("+str(self.b.size)+","+str(self.b.min_val)+","+str(self.b.max_val)+")"   *    *     def min(self):             # <<<<<<<<<<<<<< @@ -19377,7 +19962,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_12min(struct __pyx_obj_3_sa_BitSet *__pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("min", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":145 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":145   *    *     def min(self):   *         return self.b.min_val             # <<<<<<<<<<<<<< @@ -19414,7 +19999,7 @@ static PyObject *__pyx_pw_3_sa_6BitSet_15max(PyObject *__pyx_v_self, CYTHON_UNUS    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":147 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":147   *         return self.b.min_val   *    *     def max(self):             # <<<<<<<<<<<<<< @@ -19431,7 +20016,7 @@ static PyObject *__pyx_pf_3_sa_6BitSet_14max(struct __pyx_obj_3_sa_BitSet *__pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("max", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":148 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":148   *    *     def max(self):   *         return self.b.max_val             # <<<<<<<<<<<<<< @@ -19468,7 +20053,7 @@ static Py_ssize_t __pyx_pw_3_sa_6BitSet_17__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":150 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":150   *         return self.b.max_val   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -19481,7 +20066,7 @@ static Py_ssize_t __pyx_pf_3_sa_6BitSet_16__len__(struct __pyx_obj_3_sa_BitSet *    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":151 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":151   *    *     def __len__(self):   *         return self.b.size             # <<<<<<<<<<<<<< @@ -19508,7 +20093,7 @@ static int __pyx_pw_3_sa_6BitSet_19__contains__(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":153 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":153   *         return self.b.size   *    *     def __contains__(self, i):             # <<<<<<<<<<<<<< @@ -19527,7 +20112,7 @@ static int __pyx_pf_3_sa_6BitSet_18__contains__(struct __pyx_obj_3_sa_BitSet *__    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__contains__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":154 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":154   *    *     def __contains__(self, i):   *         return bool(bitset_contains(self.b, i))             # <<<<<<<<<<<<<< @@ -19553,7 +20138,7 @@ static int __pyx_pf_3_sa_6BitSet_18__contains__(struct __pyx_obj_3_sa_BitSet *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":157 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":157   *    *    * cdef str dec2bin(long i):             # <<<<<<<<<<<<<< @@ -19575,17 +20160,17 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("dec2bin", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":158 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":158   *    * cdef str dec2bin(long i):   *     cdef str result = ""             # <<<<<<<<<<<<<<   *     cdef unsigned d   *     for d in range(MIN_BOTTOM_SIZE):   */ -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_45)); -  __pyx_v_result = __pyx_kp_s_45; +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_47)); +  __pyx_v_result = __pyx_kp_s_47; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":160 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":160   *     cdef str result = ""   *     cdef unsigned d   *     for d in range(MIN_BOTTOM_SIZE):             # <<<<<<<<<<<<<< @@ -19596,17 +20181,17 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_v_d = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":161 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":161   *     cdef unsigned d   *     for d in range(MIN_BOTTOM_SIZE):   *         if i & LOWER_MASK[0] == 0:             # <<<<<<<<<<<<<<   *             result = "0"+result   *         else:   */ -    __pyx_t_3 = ((__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[0])) == 0); +    __pyx_t_3 = (((__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[0])) == 0) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":162 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":162   *     for d in range(MIN_BOTTOM_SIZE):   *         if i & LOWER_MASK[0] == 0:   *             result = "0"+result             # <<<<<<<<<<<<<< @@ -19616,13 +20201,13 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {        __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_kp_s__0), ((PyObject *)__pyx_v_result)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_4));        __Pyx_DECREF(((PyObject *)__pyx_v_result)); -      __pyx_v_result = __pyx_t_4; +      __pyx_v_result = ((PyObject*)__pyx_t_4);        __pyx_t_4 = 0;        goto __pyx_L5;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":164 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":164   *             result = "0"+result   *         else:   *             result = "1"+result             # <<<<<<<<<<<<<< @@ -19632,12 +20217,12 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {        __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_kp_s__1), ((PyObject *)__pyx_v_result)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_4));        __Pyx_DECREF(((PyObject *)__pyx_v_result)); -      __pyx_v_result = __pyx_t_4; +      __pyx_v_result = ((PyObject*)__pyx_t_4);        __pyx_t_4 = 0;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":165 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":165   *         else:   *             result = "1"+result   *         i = i >> 1             # <<<<<<<<<<<<<< @@ -19647,7 +20232,7 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {      __pyx_v_i = (__pyx_v_i >> 1);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":166 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":166   *             result = "1"+result   *         i = i >> 1   *     return result             # <<<<<<<<<<<<<< @@ -19672,7 +20257,7 @@ static PyObject *__pyx_f_3_sa_dec2bin(long __pyx_v_i) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":177 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":177   *     void** bottom   *    * cdef _VEB* new_VEB(int n):             # <<<<<<<<<<<<<< @@ -19693,7 +20278,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("new_VEB", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":181 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":181   *     cdef int num_bits, num_top_bits, i   *    *     veb = <_VEB*> malloc(sizeof(_VEB))             # <<<<<<<<<<<<<< @@ -19702,7 +20287,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb = ((struct __pyx_t_3_sa__VEB *)malloc((sizeof(struct __pyx_t_3_sa__VEB)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":183 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":183   *     veb = <_VEB*> malloc(sizeof(_VEB))   *    *     num_bits = int(ceil(log(n) / log(2)))             # <<<<<<<<<<<<<< @@ -19712,12 +20297,18 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    __pyx_t_1 = log(__pyx_v_n);    __pyx_t_2 = log(2.0);    if (unlikely(__pyx_t_2 == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "float division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[6]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __pyx_v_num_bits = ((int)ceil((__pyx_t_1 / __pyx_t_2))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":184 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":184   *    *     num_bits = int(ceil(log(n) / log(2)))   *     veb.num_bottom_bits = num_bits/2             # <<<<<<<<<<<<<< @@ -19726,17 +20317,17 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->num_bottom_bits = __Pyx_div_long(__pyx_v_num_bits, 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":185   *     num_bits = int(ceil(log(n) / log(2)))   *     veb.num_bottom_bits = num_bits/2   *     if veb.num_bottom_bits < MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *         veb.num_bottom_bits = MIN_BOTTOM_BITS   *     veb.top_universe_size = (n >> veb.num_bottom_bits) + 1   */ -  __pyx_t_3 = (__pyx_v_veb->num_bottom_bits < __pyx_v_3_sa_MIN_BOTTOM_BITS); +  __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits < __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":186 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":186   *     veb.num_bottom_bits = num_bits/2   *     if veb.num_bottom_bits < MIN_BOTTOM_BITS:   *         veb.num_bottom_bits = MIN_BOTTOM_BITS             # <<<<<<<<<<<<<< @@ -19748,7 +20339,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":187 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":187   *     if veb.num_bottom_bits < MIN_BOTTOM_BITS:   *         veb.num_bottom_bits = MIN_BOTTOM_BITS   *     veb.top_universe_size = (n >> veb.num_bottom_bits) + 1             # <<<<<<<<<<<<<< @@ -19757,7 +20348,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->top_universe_size = ((__pyx_v_n >> __pyx_v_veb->num_bottom_bits) + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":189 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":189   *     veb.top_universe_size = (n >> veb.num_bottom_bits) + 1   *    *     veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*))             # <<<<<<<<<<<<<< @@ -19766,7 +20357,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->bottom = ((void **)malloc((__pyx_v_veb->top_universe_size * (sizeof(void *))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":190 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":190   *    *     veb.bottom = <void**> malloc(veb.top_universe_size * sizeof(void*))   *     memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*))             # <<<<<<<<<<<<<< @@ -19775,17 +20366,17 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    memset(__pyx_v_veb->bottom, 0, (__pyx_v_veb->top_universe_size * (sizeof(void *)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":192 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":192   *     memset(veb.bottom, 0, veb.top_universe_size * sizeof(void*))   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *         veb.top = new_VEB(veb.top_universe_size)   *     else:   */ -  __pyx_t_3 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +  __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":193 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":193   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:   *         veb.top = new_VEB(veb.top_universe_size)             # <<<<<<<<<<<<<< @@ -19797,7 +20388,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":195 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":195   *         veb.top = new_VEB(veb.top_universe_size)   *     else:   *         veb.top = new_BitSet()             # <<<<<<<<<<<<<< @@ -19808,7 +20399,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":197 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":197   *         veb.top = new_BitSet()   *    *     veb.max_val = -1             # <<<<<<<<<<<<<< @@ -19817,7 +20408,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->max_val = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":198 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":198   *    *     veb.max_val = -1   *     veb.min_val = -1             # <<<<<<<<<<<<<< @@ -19826,7 +20417,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->min_val = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":199 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":199   *     veb.max_val = -1   *     veb.min_val = -1   *     veb.size = 0             # <<<<<<<<<<<<<< @@ -19835,7 +20426,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {   */    __pyx_v_veb->size = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":200 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":200   *     veb.min_val = -1   *     veb.size = 0   *     return veb             # <<<<<<<<<<<<<< @@ -19855,7 +20446,7 @@ static struct __pyx_t_3_sa__VEB *__pyx_f_3_sa_new_VEB(int __pyx_v_n) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":203 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":203   *    *    * cdef int VEB_insert(_VEB* veb, int i):             # <<<<<<<<<<<<<< @@ -19874,19 +20465,20 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __    int __pyx_t_1;    int __pyx_t_2;    int __pyx_t_3; +  int __pyx_t_4;    __Pyx_RefNannySetupContext("VEB_insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":208 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":208   *     cdef int a, b, tmp   *    *     if veb.size == 0:             # <<<<<<<<<<<<<<   *         veb.min_val = i   *         veb.max_val = i   */ -  __pyx_t_1 = (__pyx_v_veb->size == 0); +  __pyx_t_1 = ((__pyx_v_veb->size == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":209 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":209   *    *     if veb.size == 0:   *         veb.min_val = i             # <<<<<<<<<<<<<< @@ -19895,7 +20487,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */      __pyx_v_veb->min_val = __pyx_v_i; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":210 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":210   *     if veb.size == 0:   *         veb.min_val = i   *         veb.max_val = i             # <<<<<<<<<<<<<< @@ -19906,23 +20498,23 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":211 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":211   *         veb.min_val = i   *         veb.max_val = i   *     elif i == veb.min_val or i == veb.max_val:             # <<<<<<<<<<<<<<   *         return 0   *     else:   */ -  __pyx_t_1 = (__pyx_v_i == __pyx_v_veb->min_val); +  __pyx_t_1 = ((__pyx_v_i == __pyx_v_veb->min_val) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_i == __pyx_v_veb->max_val); +    __pyx_t_2 = ((__pyx_v_i == __pyx_v_veb->max_val) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":212 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":212   *         veb.max_val = i   *     elif i == veb.min_val or i == veb.max_val:   *         return 0             # <<<<<<<<<<<<<< @@ -19935,17 +20527,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":214 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":214   *         return 0   *     else:   *         if i < veb.min_val:             # <<<<<<<<<<<<<<   *             tmp = i   *             i = veb.min_val   */ -    __pyx_t_3 = (__pyx_v_i < __pyx_v_veb->min_val); +    __pyx_t_3 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":215 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":215   *     else:   *         if i < veb.min_val:   *             tmp = i             # <<<<<<<<<<<<<< @@ -19954,16 +20546,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */        __pyx_v_tmp = __pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":216 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":216   *         if i < veb.min_val:   *             tmp = i   *             i = veb.min_val             # <<<<<<<<<<<<<<   *             veb.min_val = tmp   *         a = i >> veb.num_bottom_bits   */ -      __pyx_v_i = __pyx_v_veb->min_val; +      __pyx_t_4 = __pyx_v_veb->min_val; +      __pyx_v_i = __pyx_t_4; -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":217 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":217   *             tmp = i   *             i = veb.min_val   *             veb.min_val = tmp             # <<<<<<<<<<<<<< @@ -19975,7 +20568,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":218 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":218   *             i = veb.min_val   *             veb.min_val = tmp   *         a = i >> veb.num_bottom_bits             # <<<<<<<<<<<<<< @@ -19984,7 +20577,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */      __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":219 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":219   *             veb.min_val = tmp   *         a = i >> veb.num_bottom_bits   *         b = i & LOWER_MASK[veb.num_bottom_bits-1]             # <<<<<<<<<<<<<< @@ -19993,27 +20586,27 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */      __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)])); -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":220 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":220   *         a = i >> veb.num_bottom_bits   *         b = i & LOWER_MASK[veb.num_bottom_bits-1]   *         if veb.bottom[a] == NULL:             # <<<<<<<<<<<<<<   *             if veb.top_universe_size > MIN_BOTTOM_SIZE:   *                 subv = <_VEB*> veb.top   */ -    __pyx_t_3 = ((__pyx_v_veb->bottom[__pyx_v_a]) == NULL); +    __pyx_t_3 = (((__pyx_v_veb->bottom[__pyx_v_a]) == NULL) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":221 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":221   *         b = i & LOWER_MASK[veb.num_bottom_bits-1]   *         if veb.bottom[a] == NULL:   *             if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *                 subv = <_VEB*> veb.top   *                 VEB_insert(subv, a)   */ -      __pyx_t_3 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +      __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":222 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":222   *         if veb.bottom[a] == NULL:   *             if veb.top_universe_size > MIN_BOTTOM_SIZE:   *                 subv = <_VEB*> veb.top             # <<<<<<<<<<<<<< @@ -20022,7 +20615,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */          __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top); -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":223 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":223   *             if veb.top_universe_size > MIN_BOTTOM_SIZE:   *                 subv = <_VEB*> veb.top   *                 VEB_insert(subv, a)             # <<<<<<<<<<<<<< @@ -20034,7 +20627,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":225 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":225   *                 VEB_insert(subv, a)   *             else:   *                 subb = <_BitSet*> veb.top             # <<<<<<<<<<<<<< @@ -20043,7 +20636,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */          __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top); -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":226 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":226   *             else:   *                 subb = <_BitSet*> veb.top   *                 bitset_insert(subb, a)             # <<<<<<<<<<<<<< @@ -20054,17 +20647,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __        }        __pyx_L6:; -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":227 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":227   *                 subb = <_BitSet*> veb.top   *                 bitset_insert(subb, a)   *             if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *                 veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)   *             else:   */ -      __pyx_t_3 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +      __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":228 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":228   *                 bitset_insert(subb, a)   *             if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *                 veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)             # <<<<<<<<<<<<<< @@ -20076,7 +20669,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":230 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":230   *                 veb.bottom[a] = new_VEB(1 << veb.num_bottom_bits)   *             else:   *                 veb.bottom[a] = new_BitSet()             # <<<<<<<<<<<<<< @@ -20090,17 +20683,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":231 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":231   *             else:   *                 veb.bottom[a] = new_BitSet()   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *             subv = <_VEB*> veb.bottom[a]   *             if VEB_insert(subv, b) == 0:   */ -    __pyx_t_3 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +    __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":232 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":232   *                 veb.bottom[a] = new_BitSet()   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20109,17 +20702,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */        __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":233 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":233   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]   *             if VEB_insert(subv, b) == 0:             # <<<<<<<<<<<<<<   *                 return 0   *         else:   */ -      __pyx_t_3 = (__pyx_f_3_sa_VEB_insert(__pyx_v_subv, __pyx_v_b) == 0); +      __pyx_t_3 = ((__pyx_f_3_sa_VEB_insert(__pyx_v_subv, __pyx_v_b) == 0) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":234 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":234   *             subv = <_VEB*> veb.bottom[a]   *             if VEB_insert(subv, b) == 0:   *                 return 0             # <<<<<<<<<<<<<< @@ -20135,7 +20728,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":236 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":236   *                 return 0   *         else:   *             subb = <_BitSet*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20144,17 +20737,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */        __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":237 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":237   *         else:   *             subb = <_BitSet*> veb.bottom[a]   *             if bitset_insert(subb, b) == 0:             # <<<<<<<<<<<<<<   *                 return 0   *    */ -      __pyx_t_3 = (__pyx_f_3_sa_bitset_insert(__pyx_v_subb, __pyx_v_b) == 0); +      __pyx_t_3 = ((__pyx_f_3_sa_bitset_insert(__pyx_v_subb, __pyx_v_b) == 0) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":238 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":238   *             subb = <_BitSet*> veb.bottom[a]   *             if bitset_insert(subb, b) == 0:   *                 return 0             # <<<<<<<<<<<<<< @@ -20169,17 +20762,17 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __      }      __pyx_L8:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":240 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":240   *                 return 0   *    *         if i > veb.max_val:             # <<<<<<<<<<<<<<   *             veb.max_val = i   *     veb.size = veb.size + 1   */ -    __pyx_t_3 = (__pyx_v_i > __pyx_v_veb->max_val); +    __pyx_t_3 = ((__pyx_v_i > __pyx_v_veb->max_val) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":241 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":241   *    *         if i > veb.max_val:   *             veb.max_val = i             # <<<<<<<<<<<<<< @@ -20193,7 +20786,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":242 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":242   *         if i > veb.max_val:   *             veb.max_val = i   *     veb.size = veb.size + 1             # <<<<<<<<<<<<<< @@ -20202,7 +20795,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __   */    __pyx_v_veb->size = (__pyx_v_veb->size + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":243 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":243   *             veb.max_val = i   *     veb.size = veb.size + 1   *     return 1             # <<<<<<<<<<<<<< @@ -20218,7 +20811,7 @@ static int __pyx_f_3_sa_VEB_insert(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int __    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":246 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":246   *    *    * cdef del_VEB(_VEB* veb):             # <<<<<<<<<<<<<< @@ -20231,46 +20824,49 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("del_VEB", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":249 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":249   *     cdef int i   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *         i = (<_VEB*> veb.top).min_val   *     else:   */ -  __pyx_t_1 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +  __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":250 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":250   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:   *         i = (<_VEB*> veb.top).min_val             # <<<<<<<<<<<<<<   *     else:   *         i = (<_BitSet*> veb.top).min_val   */ -    __pyx_v_i = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)->min_val; +    __pyx_t_2 = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)->min_val; +    __pyx_v_i = __pyx_t_2;      goto __pyx_L3;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":252 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":252   *         i = (<_VEB*> veb.top).min_val   *     else:   *         i = (<_BitSet*> veb.top).min_val             # <<<<<<<<<<<<<<   *    *     while i != -1:   */ -    __pyx_v_i = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top)->min_val; +    __pyx_t_2 = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top)->min_val; +    __pyx_v_i = __pyx_t_2;    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":254 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":254   *         i = (<_BitSet*> veb.top).min_val   *    *     while i != -1:             # <<<<<<<<<<<<<< @@ -20278,34 +20874,34 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {   *             del_VEB(<_VEB*> veb.bottom[i])   */    while (1) { -    __pyx_t_1 = (__pyx_v_i != -1); +    __pyx_t_1 = ((__pyx_v_i != -1) != 0);      if (!__pyx_t_1) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":255 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":255   *    *     while i != -1:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *             del_VEB(<_VEB*> veb.bottom[i])   *         else:   */ -    __pyx_t_1 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +    __pyx_t_1 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":256 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":256   *     while i != -1:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             del_VEB(<_VEB*> veb.bottom[i])             # <<<<<<<<<<<<<<   *         else:   *             free(<_BitSet*> veb.bottom[i])   */ -      __pyx_t_2 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_i]))); 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); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_3 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_i]))); 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_3); __pyx_t_3 = 0;        goto __pyx_L6;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":258 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":258   *             del_VEB(<_VEB*> veb.bottom[i])   *         else:   *             free(<_BitSet*> veb.bottom[i])             # <<<<<<<<<<<<<< @@ -20316,17 +20912,17 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {      }      __pyx_L6:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":260 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":260   *             free(<_BitSet*> veb.bottom[i])   *    *         if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *             i = VEB_findsucc(<_VEB*> veb.top, i)   *         else:   */ -    __pyx_t_1 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +    __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":261 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":261   *    *         if veb.top_universe_size > MIN_BOTTOM_SIZE:   *             i = VEB_findsucc(<_VEB*> veb.top, i)             # <<<<<<<<<<<<<< @@ -20338,7 +20934,7 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":263 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":263   *             i = VEB_findsucc(<_VEB*> veb.top, i)   *         else:   *             i = bitset_findsucc(<_BitSet*> veb.top, i)             # <<<<<<<<<<<<<< @@ -20350,31 +20946,31 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {      __pyx_L7:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":265 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":265   *             i = bitset_findsucc(<_BitSet*> veb.top, i)   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *         del_VEB(<_VEB*> veb.top)   *     else:   */ -  __pyx_t_1 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +  __pyx_t_1 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":266 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":266   *    *     if veb.top_universe_size > MIN_BOTTOM_SIZE:   *         del_VEB(<_VEB*> veb.top)             # <<<<<<<<<<<<<<   *     else:   *         free(<_BitSet*> veb.top)   */ -    __pyx_t_2 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = __pyx_f_3_sa_del_VEB(((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      goto __pyx_L8;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":268 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":268   *         del_VEB(<_VEB*> veb.top)   *     else:   *         free(<_BitSet*> veb.top)             # <<<<<<<<<<<<<< @@ -20385,7 +20981,7 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {    }    __pyx_L8:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":269 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":269   *     else:   *         free(<_BitSet*> veb.top)   *     free(veb.bottom)             # <<<<<<<<<<<<<< @@ -20394,7 +20990,7 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {   */    free(__pyx_v_veb->bottom); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":270 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":270   *         free(<_BitSet*> veb.top)   *     free(veb.bottom)   *     free(veb)             # <<<<<<<<<<<<<< @@ -20406,7 +21002,7 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {    __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("_sa.del_VEB", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = 0;    __pyx_L0:; @@ -20415,7 +21011,7 @@ static PyObject *__pyx_f_3_sa_del_VEB(struct __pyx_t_3_sa__VEB *__pyx_v_veb) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":273 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":273   *    *    * cdef int VEB_findsucc(_VEB* veb, int i):             # <<<<<<<<<<<<<< @@ -20438,23 +21034,23 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    int __pyx_t_3;    __Pyx_RefNannySetupContext("VEB_findsucc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":278 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":278   *     cdef int a, b, j, c, found   *    *     if veb.max_val == -1 or i>=veb.max_val:             # <<<<<<<<<<<<<<   *         return -1   *     if i < veb.min_val:   */ -  __pyx_t_1 = (__pyx_v_veb->max_val == -1); +  __pyx_t_1 = ((__pyx_v_veb->max_val == -1) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_i >= __pyx_v_veb->max_val); +    __pyx_t_2 = ((__pyx_v_i >= __pyx_v_veb->max_val) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":279 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":279   *    *     if veb.max_val == -1 or i>=veb.max_val:   *         return -1             # <<<<<<<<<<<<<< @@ -20467,17 +21063,17 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":280 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":280   *     if veb.max_val == -1 or i>=veb.max_val:   *         return -1   *     if i < veb.min_val:             # <<<<<<<<<<<<<<   *         return veb.min_val   *    */ -  __pyx_t_3 = (__pyx_v_i < __pyx_v_veb->min_val); +  __pyx_t_3 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":281 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":281   *         return -1   *     if i < veb.min_val:   *         return veb.min_val             # <<<<<<<<<<<<<< @@ -20490,7 +21086,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":283 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":283   *         return veb.min_val   *    *     a = i >> veb.num_bottom_bits             # <<<<<<<<<<<<<< @@ -20499,7 +21095,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */    __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":284 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":284   *    *     a = i >> veb.num_bottom_bits   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]             # <<<<<<<<<<<<<< @@ -20508,7 +21104,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */    __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)])); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":285 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":285   *     a = i >> veb.num_bottom_bits   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]   *     found = 0             # <<<<<<<<<<<<<< @@ -20517,27 +21113,27 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */    __pyx_v_found = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":286 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":286   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]   *     found = 0   *     if veb.bottom[a] != NULL:             # <<<<<<<<<<<<<<   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]   */ -  __pyx_t_3 = ((__pyx_v_veb->bottom[__pyx_v_a]) != NULL); +  __pyx_t_3 = (((__pyx_v_veb->bottom[__pyx_v_a]) != NULL) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":287 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":287   *     found = 0   *     if veb.bottom[a] != NULL:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *             subv = <_VEB*> veb.bottom[a]   *             if subv.max_val > b:   */ -    __pyx_t_3 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +    __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":288 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":288   *     if veb.bottom[a] != NULL:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20546,17 +21142,17 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":289 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":289   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]   *             if subv.max_val > b:             # <<<<<<<<<<<<<<   *                 j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)   *                 found = 1   */ -      __pyx_t_3 = (__pyx_v_subv->max_val > __pyx_v_b); +      __pyx_t_3 = ((__pyx_v_subv->max_val > __pyx_v_b) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":290 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":290   *             subv = <_VEB*> veb.bottom[a]   *             if subv.max_val > b:   *                 j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)             # <<<<<<<<<<<<<< @@ -20565,7 +21161,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */          __pyx_v_j = ((__pyx_v_a << __pyx_v_veb->num_bottom_bits) + __pyx_f_3_sa_VEB_findsucc(__pyx_v_subv, __pyx_v_b)); -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":291 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":291   *             if subv.max_val > b:   *                 j = (a << veb.num_bottom_bits) + VEB_findsucc(subv, b)   *                 found = 1             # <<<<<<<<<<<<<< @@ -20580,7 +21176,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":293 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":293   *                 found = 1   *         else:   *             subb = <_BitSet*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20589,17 +21185,17 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":294 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":294   *         else:   *             subb = <_BitSet*> veb.bottom[a]   *             if subb.max_val > b:             # <<<<<<<<<<<<<<   *                 j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)   *                 found = 1   */ -      __pyx_t_3 = (__pyx_v_subb->max_val > __pyx_v_b); +      __pyx_t_3 = ((__pyx_v_subb->max_val > __pyx_v_b) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":295 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":295   *             subb = <_BitSet*> veb.bottom[a]   *             if subb.max_val > b:   *                 j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)             # <<<<<<<<<<<<<< @@ -20608,7 +21204,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */          __pyx_v_j = ((__pyx_v_a << __pyx_v_veb->num_bottom_bits) + __pyx_f_3_sa_bitset_findsucc(__pyx_v_subb, __pyx_v_b)); -        /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":296 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":296   *             if subb.max_val > b:   *                 j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)   *                 found = 1             # <<<<<<<<<<<<<< @@ -20625,27 +21221,27 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":297 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":297   *                 j = (a << veb.num_bottom_bits) + bitset_findsucc(subb, b)   *                 found = 1   *     if found==0:             # <<<<<<<<<<<<<<   *         if veb.top_universe_size > MIN_BOTTOM_SIZE:   *             subv = <_VEB*> veb.top   */ -  __pyx_t_3 = (__pyx_v_found == 0); +  __pyx_t_3 = ((__pyx_v_found == 0) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":298 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":298   *                 found = 1   *     if found==0:   *         if veb.top_universe_size > MIN_BOTTOM_SIZE:             # <<<<<<<<<<<<<<   *             subv = <_VEB*> veb.top   *             c = VEB_findsucc(subv, a)   */ -    __pyx_t_3 = (__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE); +    __pyx_t_3 = ((__pyx_v_veb->top_universe_size > __pyx_v_3_sa_MIN_BOTTOM_SIZE) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":299 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":299   *     if found==0:   *         if veb.top_universe_size > MIN_BOTTOM_SIZE:   *             subv = <_VEB*> veb.top             # <<<<<<<<<<<<<< @@ -20654,7 +21250,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)__pyx_v_veb->top); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":300 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":300   *         if veb.top_universe_size > MIN_BOTTOM_SIZE:   *             subv = <_VEB*> veb.top   *             c = VEB_findsucc(subv, a)             # <<<<<<<<<<<<<< @@ -20666,7 +21262,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":302 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":302   *             c = VEB_findsucc(subv, a)   *         else:   *             subb = <_BitSet*> veb.top             # <<<<<<<<<<<<<< @@ -20675,7 +21271,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)__pyx_v_veb->top); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":303 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":303   *         else:   *             subb = <_BitSet*> veb.top   *             c = bitset_findsucc(subb, a)             # <<<<<<<<<<<<<< @@ -20686,17 +21282,17 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int      }      __pyx_L10:; -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":304 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":304   *             subb = <_BitSet*> veb.top   *             c = bitset_findsucc(subb, a)   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *             subv = <_VEB*> veb.bottom[c]   *             j = (c << veb.num_bottom_bits) + subv.min_val   */ -    __pyx_t_3 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +    __pyx_t_3 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":305 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":305   *             c = bitset_findsucc(subb, a)   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[c]             # <<<<<<<<<<<<<< @@ -20705,7 +21301,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_c])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":306 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":306   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[c]   *             j = (c << veb.num_bottom_bits) + subv.min_val             # <<<<<<<<<<<<<< @@ -20717,7 +21313,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":308 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":308   *             j = (c << veb.num_bottom_bits) + subv.min_val   *         else:   *             subb = <_BitSet*> veb.bottom[c]             # <<<<<<<<<<<<<< @@ -20726,7 +21322,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_c])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":309 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":309   *         else:   *             subb = <_BitSet*> veb.bottom[c]   *             j = (c << veb.num_bottom_bits) + subb.min_val             # <<<<<<<<<<<<<< @@ -20740,7 +21336,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L9:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":310 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":310   *             subb = <_BitSet*> veb.bottom[c]   *             j = (c << veb.num_bottom_bits) + subb.min_val   *     return j             # <<<<<<<<<<<<<< @@ -20756,7 +21352,7 @@ static int __pyx_f_3_sa_VEB_findsucc(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":313 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":313   *    *    * cdef int VEB_contains(_VEB* veb, int i):             # <<<<<<<<<<<<<< @@ -20777,18 +21373,18 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    int __pyx_t_4;    __Pyx_RefNannySetupContext("VEB_contains", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":318 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":318   *     cdef int a, b   *    *     if veb.size == 0 or i < veb.min_val or i > veb.max_val:             # <<<<<<<<<<<<<<   *         return 0   *    */ -  __pyx_t_1 = (__pyx_v_veb->size == 0); +  __pyx_t_1 = ((__pyx_v_veb->size == 0) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_i < __pyx_v_veb->min_val); +    __pyx_t_2 = ((__pyx_v_i < __pyx_v_veb->min_val) != 0);      if (!__pyx_t_2) { -      __pyx_t_3 = (__pyx_v_i > __pyx_v_veb->max_val); +      __pyx_t_3 = ((__pyx_v_i > __pyx_v_veb->max_val) != 0);        __pyx_t_4 = __pyx_t_3;      } else {        __pyx_t_4 = __pyx_t_2; @@ -20799,7 +21395,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":319 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":319   *    *     if veb.size == 0 or i < veb.min_val or i > veb.max_val:   *         return 0             # <<<<<<<<<<<<<< @@ -20812,17 +21408,17 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":321 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":321   *         return 0   *    *     if veb.min_val == i:             # <<<<<<<<<<<<<<   *         return 1   *     else:   */ -  __pyx_t_2 = (__pyx_v_veb->min_val == __pyx_v_i); +  __pyx_t_2 = ((__pyx_v_veb->min_val == __pyx_v_i) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":322 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":322   *    *     if veb.min_val == i:   *         return 1             # <<<<<<<<<<<<<< @@ -20835,17 +21431,17 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":324 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":324   *         return 1   *     else:   *         if veb.size == 1:             # <<<<<<<<<<<<<<   *             return 0   *    */ -    __pyx_t_2 = (__pyx_v_veb->size == 1); +    __pyx_t_2 = ((__pyx_v_veb->size == 1) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":325 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":325   *     else:   *         if veb.size == 1:   *             return 0             # <<<<<<<<<<<<<< @@ -20860,7 +21456,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":327 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":327   *             return 0   *    *     a = i >> veb.num_bottom_bits             # <<<<<<<<<<<<<< @@ -20869,7 +21465,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */    __pyx_v_a = (__pyx_v_i >> __pyx_v_veb->num_bottom_bits); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":328 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":328   *    *     a = i >> veb.num_bottom_bits   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]             # <<<<<<<<<<<<<< @@ -20878,17 +21474,17 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */    __pyx_v_b = (__pyx_v_i & (__pyx_v_3_sa_LOWER_MASK[(__pyx_v_veb->num_bottom_bits - 1)])); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":329 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":329   *     a = i >> veb.num_bottom_bits   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]   *     if veb.bottom[a] == NULL:             # <<<<<<<<<<<<<<   *         return 0   *     else:   */ -  __pyx_t_2 = ((__pyx_v_veb->bottom[__pyx_v_a]) == NULL); +  __pyx_t_2 = (((__pyx_v_veb->bottom[__pyx_v_a]) == NULL) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":330 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":330   *     b = i & LOWER_MASK[veb.num_bottom_bits-1]   *     if veb.bottom[a] == NULL:   *         return 0             # <<<<<<<<<<<<<< @@ -20901,17 +21497,17 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":332 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":332   *         return 0   *     else:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:             # <<<<<<<<<<<<<<   *             subv = <_VEB*> veb.bottom[a]   *             return VEB_contains(subv, b)   */ -    __pyx_t_2 = (__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS); +    __pyx_t_2 = ((__pyx_v_veb->num_bottom_bits > __pyx_v_3_sa_MIN_BOTTOM_BITS) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":333 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":333   *     else:   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20920,7 +21516,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subv = ((struct __pyx_t_3_sa__VEB *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":334 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":334   *         if veb.num_bottom_bits > MIN_BOTTOM_BITS:   *             subv = <_VEB*> veb.bottom[a]   *             return VEB_contains(subv, b)             # <<<<<<<<<<<<<< @@ -20933,7 +21529,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":336 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":336   *             return VEB_contains(subv, b)   *         else:   *             subb = <_BitSet*> veb.bottom[a]             # <<<<<<<<<<<<<< @@ -20942,7 +21538,7 @@ static int __pyx_f_3_sa_VEB_contains(struct __pyx_t_3_sa__VEB *__pyx_v_veb, int   */        __pyx_v_subb = ((struct __pyx_t_3_sa__BitSet *)(__pyx_v_veb->bottom[__pyx_v_a])); -      /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":337 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":337   *         else:   *             subb = <_BitSet*> veb.bottom[a]   *             return bitset_contains(subb, b)             # <<<<<<<<<<<<<< @@ -20973,7 +21569,7 @@ static PyObject *__pyx_pw_3_sa_11VEBIterator_1__next__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":344 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":344   *     cdef int next_val   *    *     def __next__(self):             # <<<<<<<<<<<<<< @@ -20987,22 +21583,23 @@ static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBI    __Pyx_RefNannyDeclarations    int __pyx_t_1;    PyObject *__pyx_t_2 = NULL; +  int __pyx_t_3;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__next__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":347 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":347   *         cdef int ret_val   *    *         if self.next_val == -1:             # <<<<<<<<<<<<<<   *             raise StopIteration()   *         ret_val = self.next_val   */ -  __pyx_t_1 = (__pyx_v_self->next_val == -1); +  __pyx_t_1 = ((__pyx_v_self->next_val == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":348 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":348   *    *         if self.next_val == -1:   *             raise StopIteration()             # <<<<<<<<<<<<<< @@ -21018,16 +21615,17 @@ static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBI    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":349 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":349   *         if self.next_val == -1:   *             raise StopIteration()   *         ret_val = self.next_val             # <<<<<<<<<<<<<<   *         self.next_val = VEB_findsucc(self.v, ret_val)   *         return ret_val   */ -  __pyx_v_ret_val = __pyx_v_self->next_val; +  __pyx_t_3 = __pyx_v_self->next_val; +  __pyx_v_ret_val = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":350 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":350   *             raise StopIteration()   *         ret_val = self.next_val   *         self.next_val = VEB_findsucc(self.v, ret_val)             # <<<<<<<<<<<<<< @@ -21036,7 +21634,7 @@ static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBI   */    __pyx_v_self->next_val = __pyx_f_3_sa_VEB_findsucc(__pyx_v_self->v, __pyx_v_ret_val); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":351 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":351   *         ret_val = self.next_val   *         self.next_val = VEB_findsucc(self.v, ret_val)   *         return ret_val             # <<<<<<<<<<<<<< @@ -21066,11 +21664,14 @@ static PyObject *__pyx_pf_3_sa_11VEBIterator___next__(struct __pyx_obj_3_sa_VEBI  static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/  static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    int __pyx_v_size; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__size,0};      PyObject* values[1] = {0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -21083,8 +21684,7 @@ static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;        }        if (unlikely(kw_args > 0)) { @@ -21110,7 +21710,7 @@ static int __pyx_pw_3_sa_3VEB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":360 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":360   *     cdef int _first(self)   *    *     def __cinit__(self, int size):             # <<<<<<<<<<<<<< @@ -21123,7 +21723,7 @@ static int __pyx_pf_3_sa_3VEB___cinit__(struct __pyx_obj_3_sa_VEB *__pyx_v_self,    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":361 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":361   *    *     def __cinit__(self, int size):   *         self.veb = new_VEB(size)             # <<<<<<<<<<<<<< @@ -21146,7 +21746,7 @@ static void __pyx_pw_3_sa_3VEB_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":363 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":363   *         self.veb = new_VEB(size)   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -21162,7 +21762,7 @@ static void __pyx_pf_3_sa_3VEB_2__dealloc__(struct __pyx_obj_3_sa_VEB *__pyx_v_s    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":364 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":364   *    *     def __dealloc__(self):   *         del_VEB(self.veb)             # <<<<<<<<<<<<<< @@ -21192,7 +21792,7 @@ static PyObject *__pyx_pw_3_sa_3VEB_5__iter__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":366 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":366   *         del_VEB(self.veb)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -21205,12 +21805,14 @@ static PyObject *__pyx_pf_3_sa_3VEB_4__iter__(struct __pyx_obj_3_sa_VEB *__pyx_v    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    PyObject *__pyx_t_1 = NULL; +  struct __pyx_t_3_sa__VEB *__pyx_t_2; +  int __pyx_t_3;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__iter__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":368 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":368   *     def __iter__(self):   *         cdef VEBIterator it   *         it = VEBIterator()             # <<<<<<<<<<<<<< @@ -21222,25 +21824,27 @@ static PyObject *__pyx_pf_3_sa_3VEB_4__iter__(struct __pyx_obj_3_sa_VEB *__pyx_v    __pyx_v_it = ((struct __pyx_obj_3_sa_VEBIterator *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":369 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":369   *         cdef VEBIterator it   *         it = VEBIterator()   *         it.v = self.veb             # <<<<<<<<<<<<<<   *         it.next_val = self.veb.min_val   *         return it   */ -  __pyx_v_it->v = __pyx_v_self->veb; +  __pyx_t_2 = __pyx_v_self->veb; +  __pyx_v_it->v = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":370 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":370   *         it = VEBIterator()   *         it.v = self.veb   *         it.next_val = self.veb.min_val             # <<<<<<<<<<<<<<   *         return it   *    */ -  __pyx_v_it->next_val = __pyx_v_self->veb->min_val; +  __pyx_t_3 = __pyx_v_self->veb->min_val; +  __pyx_v_it->next_val = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":371 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":371   *         it.v = self.veb   *         it.next_val = self.veb.min_val   *         return it             # <<<<<<<<<<<<<< @@ -21276,7 +21880,7 @@ static PyObject *__pyx_pw_3_sa_3VEB_7insert(PyObject *__pyx_v_self, PyObject *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":373 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":373   *         return it   *    *     def insert(self, i):             # <<<<<<<<<<<<<< @@ -21294,7 +21898,7 @@ static PyObject *__pyx_pf_3_sa_3VEB_6insert(struct __pyx_obj_3_sa_VEB *__pyx_v_s    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":374 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":374   *    *     def insert(self, i):   *         return VEB_insert(self.veb, i)             # <<<<<<<<<<<<<< @@ -21321,7 +21925,7 @@ static PyObject *__pyx_pf_3_sa_3VEB_6insert(struct __pyx_obj_3_sa_VEB *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":376 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":376   *         return VEB_insert(self.veb, i)   *    *     cdef int _insert(self, int i):             # <<<<<<<<<<<<<< @@ -21334,7 +21938,7 @@ static int __pyx_f_3_sa_3VEB__insert(struct __pyx_obj_3_sa_VEB *__pyx_v_self, in    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":377 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":377   *    *     cdef int _insert(self, int i):   *         return VEB_insert(self.veb, i)             # <<<<<<<<<<<<<< @@ -21361,7 +21965,7 @@ static PyObject *__pyx_pw_3_sa_3VEB_9findsucc(PyObject *__pyx_v_self, PyObject *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":379 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":379   *         return VEB_insert(self.veb, i)   *    *     def findsucc(self, i):             # <<<<<<<<<<<<<< @@ -21379,7 +21983,7 @@ static PyObject *__pyx_pf_3_sa_3VEB_8findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("findsucc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":380 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":380   *    *     def findsucc(self, i):   *         return VEB_findsucc(self.veb, i)             # <<<<<<<<<<<<<< @@ -21406,7 +22010,7 @@ static PyObject *__pyx_pf_3_sa_3VEB_8findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":382 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":382   *         return VEB_findsucc(self.veb, i)   *    *     cdef int _first(self):             # <<<<<<<<<<<<<< @@ -21419,7 +22023,7 @@ static int __pyx_f_3_sa_3VEB__first(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_first", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":383 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":383   *    *     cdef int _first(self):   *         return self.veb.min_val             # <<<<<<<<<<<<<< @@ -21435,7 +22039,7 @@ static int __pyx_f_3_sa_3VEB__first(struct __pyx_obj_3_sa_VEB *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":385 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":385   *         return self.veb.min_val   *    *     cdef int _findsucc(self, int i):             # <<<<<<<<<<<<<< @@ -21448,7 +22052,7 @@ static int __pyx_f_3_sa_3VEB__findsucc(struct __pyx_obj_3_sa_VEB *__pyx_v_self,    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("_findsucc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":386 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":386   *    *     cdef int _findsucc(self, int i):   *         return VEB_findsucc(self.veb, i)             # <<<<<<<<<<<<<< @@ -21475,7 +22079,7 @@ static Py_ssize_t __pyx_pw_3_sa_3VEB_11__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":388 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":388   *         return VEB_findsucc(self.veb, i)   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -21488,7 +22092,7 @@ static Py_ssize_t __pyx_pf_3_sa_3VEB_10__len__(struct __pyx_obj_3_sa_VEB *__pyx_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":389 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":389   *    *     def __len__(self):   *         return self.veb.size             # <<<<<<<<<<<<<< @@ -21515,7 +22119,7 @@ static int __pyx_pw_3_sa_3VEB_13__contains__(PyObject *__pyx_v_self, PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":391 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":391   *         return self.veb.size   *    *     def __contains__(self, i):             # <<<<<<<<<<<<<< @@ -21531,7 +22135,7 @@ static int __pyx_pf_3_sa_3VEB_12__contains__(struct __pyx_obj_3_sa_VEB *__pyx_v_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__contains__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":392 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":392   *    *     def __contains__(self, i):   *         return VEB_contains(self.veb, i)             # <<<<<<<<<<<<<< @@ -21554,11 +22158,14 @@ static int __pyx_pf_3_sa_3VEB_12__contains__(struct __pyx_obj_3_sa_VEB *__pyx_v_  static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/  static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sa = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa,0};      PyObject* values[1] = {0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -21571,8 +22178,7 @@ static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sa); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sa)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;        }        if (unlikely(kw_args > 0)) { @@ -21603,7 +22209,7 @@ static int __pyx_pw_3_sa_3LCP_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":9 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":9   *     cdef IntList lcp   *    *     def __cinit__(self, SuffixArray sa):             # <<<<<<<<<<<<<< @@ -21632,24 +22238,24 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":13 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":13   *         cdef IntList rank   *    *         logger.info("Constructing LCP array")             # <<<<<<<<<<<<<<   *         self.sa = sa   *         n = self.sa.sa.len   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __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_k_tuple_61), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_63), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __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/paulb/workspace/cdec/python/src/sa/lcp.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":14   *    *         logger.info("Constructing LCP array")   *         self.sa = sa             # <<<<<<<<<<<<<< @@ -21662,16 +22268,17 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    __Pyx_DECREF(((PyObject *)__pyx_v_self->sa));    __pyx_v_self->sa = __pyx_v_sa; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":15   *         logger.info("Constructing LCP array")   *         self.sa = sa   *         n = self.sa.sa.len             # <<<<<<<<<<<<<<   *         self.lcp = IntList(initial_len=n)   *    */ -  __pyx_v_n = __pyx_v_self->sa->sa->len; +  __pyx_t_3 = __pyx_v_self->sa->sa->len; +  __pyx_v_n = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":16 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":16   *         self.sa = sa   *         n = self.sa.sa.len   *         self.lcp = IntList(initial_len=n)             # <<<<<<<<<<<<<< @@ -21693,7 +22300,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    __pyx_v_self->lcp = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":18   *         self.lcp = IntList(initial_len=n)   *    *         rank = IntList(initial_len=n)             # <<<<<<<<<<<<<< @@ -21712,7 +22319,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    __pyx_v_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":19 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":19   *    *         rank = IntList(initial_len=n)   *         for i from 0 <= i < n:             # <<<<<<<<<<<<<< @@ -21722,7 +22329,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    __pyx_t_3 = __pyx_v_n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":20 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":20   *         rank = IntList(initial_len=n)   *         for i from 0 <= i < n:   *             rank.arr[sa.sa.arr[i]] = i             # <<<<<<<<<<<<<< @@ -21732,7 +22339,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,      (__pyx_v_rank->arr[(__pyx_v_sa->sa->arr[__pyx_v_i])]) = __pyx_v_i;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":22   *             rank.arr[sa.sa.arr[i]] = i   *    *         h = 0             # <<<<<<<<<<<<<< @@ -21741,7 +22348,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,   */    __pyx_v_h = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":23   *    *         h = 0   *         for i from 0 <= i < n:             # <<<<<<<<<<<<<< @@ -21751,7 +22358,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,    __pyx_t_3 = __pyx_v_n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":24 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":24   *         h = 0   *         for i from 0 <= i < n:   *             k = rank.arr[i]             # <<<<<<<<<<<<<< @@ -21760,17 +22367,17 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,   */      __pyx_v_k = (__pyx_v_rank->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":25 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":25   *         for i from 0 <= i < n:   *             k = rank.arr[i]   *             if k == 0:             # <<<<<<<<<<<<<<   *                 self.lcp.arr[k] = -1   *             else:   */ -    __pyx_t_4 = (__pyx_v_k == 0); +    __pyx_t_4 = ((__pyx_v_k == 0) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":26 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":26   *             k = rank.arr[i]   *             if k == 0:   *                 self.lcp.arr[k] = -1             # <<<<<<<<<<<<<< @@ -21782,7 +22389,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":28 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":28   *                 self.lcp.arr[k] = -1   *             else:   *                 j = sa.sa.arr[k-1]             # <<<<<<<<<<<<<< @@ -21791,7 +22398,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,   */        __pyx_v_j = (__pyx_v_sa->sa->arr[(__pyx_v_k - 1)]); -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":29 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":29   *             else:   *                 j = sa.sa.arr[k-1]   *                 while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:             # <<<<<<<<<<<<<< @@ -21799,11 +22406,11 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,   *                 self.lcp.arr[k] = h   */        while (1) { -        __pyx_t_4 = ((__pyx_v_i + __pyx_v_h) < __pyx_v_n); +        __pyx_t_4 = (((__pyx_v_i + __pyx_v_h) < __pyx_v_n) != 0);          if (__pyx_t_4) { -          __pyx_t_5 = ((__pyx_v_j + __pyx_v_h) < __pyx_v_n); +          __pyx_t_5 = (((__pyx_v_j + __pyx_v_h) < __pyx_v_n) != 0);            if (__pyx_t_5) { -            __pyx_t_6 = ((__pyx_v_sa->darray->data->arr[(__pyx_v_i + __pyx_v_h)]) == (__pyx_v_sa->darray->data->arr[(__pyx_v_j + __pyx_v_h)])); +            __pyx_t_6 = (((__pyx_v_sa->darray->data->arr[(__pyx_v_i + __pyx_v_h)]) == (__pyx_v_sa->darray->data->arr[(__pyx_v_j + __pyx_v_h)])) != 0);              __pyx_t_7 = __pyx_t_6;            } else {              __pyx_t_7 = __pyx_t_5; @@ -21814,7 +22421,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,          }          if (!__pyx_t_5) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":30 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":30   *                 j = sa.sa.arr[k-1]   *                 while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:   *                     h = h+1             # <<<<<<<<<<<<<< @@ -21824,7 +22431,7 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,          __pyx_v_h = (__pyx_v_h + 1);        } -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":31 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":31   *                 while i+h < n and j+h < n and sa.darray.data.arr[i+h] == sa.darray.data.arr[j+h]:   *                     h = h+1   *                 self.lcp.arr[k] = h             # <<<<<<<<<<<<<< @@ -21835,17 +22442,17 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":32 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":32   *                     h = h+1   *                 self.lcp.arr[k] = h   *             if h > 0:             # <<<<<<<<<<<<<<   *                 h = h-1   *         logger.info("LCP array completed")   */ -    __pyx_t_5 = (__pyx_v_h > 0); +    __pyx_t_5 = ((__pyx_v_h > 0) != 0);      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":33 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":33   *                 self.lcp.arr[k] = h   *             if h > 0:   *                 h = h-1             # <<<<<<<<<<<<<< @@ -21858,19 +22465,19 @@ static int __pyx_pf_3_sa_3LCP___cinit__(struct __pyx_obj_3_sa_LCP *__pyx_v_self,      __pyx_L10:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":34   *             if h > 0:   *                 h = h-1   *         logger.info("LCP array completed")             # <<<<<<<<<<<<<<   *    *     def compute_stats(self, int max_n):   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); 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_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_63), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_65), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __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; @@ -21894,6 +22501,9 @@ static PyObject *__pyx_pw_3_sa_3LCP_3compute_stats(PyObject *__pyx_v_self, PyObj  static char __pyx_doc_3_sa_3LCP_2compute_stats[] = "Note: the output of this function is not exact.  In\n        particular, the frequency associated with each word is \n        not guaranteed to be correct.  This is due to a bit of\n        laxness in the design; the function is intended only to\n        obtain a list of the most frequent words; for this \n        purpose it is perfectly fine";  static PyObject *__pyx_pw_3_sa_3LCP_3compute_stats(PyObject *__pyx_v_self, PyObject *__pyx_arg_max_n) {    int __pyx_v_max_n; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("compute_stats (wrapper)", 0); @@ -21911,7 +22521,7 @@ static PyObject *__pyx_pw_3_sa_3LCP_3compute_stats(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":36 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":36   *         logger.info("LCP array completed")   *    *     def compute_stats(self, int max_n):             # <<<<<<<<<<<<<< @@ -21927,7 +22537,7 @@ static PyObject *__pyx_pf_3_sa_3LCP_2compute_stats(struct __pyx_obj_3_sa_LCP *__    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("compute_stats", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(__pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -21960,8 +22570,8 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen  {    struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *__pyx_cur_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)__pyx_generator->closure);    PyObject *__pyx_r = NULL; -  PyObject *__pyx_t_1 = NULL; -  int __pyx_t_2; +  int __pyx_t_1; +  PyObject *__pyx_t_2 = NULL;    PyObject *__pyx_t_3 = NULL;    int __pyx_t_4;    int __pyx_t_5; @@ -21970,6 +22580,9 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen    int __pyx_t_8;    long __pyx_t_9;    PyObject *__pyx_t_10 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -21982,59 +22595,60 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":48 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":48   *         cdef VEB veb   *    *         N = self.sa.sa.len             # <<<<<<<<<<<<<<   *    *         ngram_starts = []   */ -  __pyx_cur_scope->__pyx_v_N = __pyx_cur_scope->__pyx_v_self->sa->sa->len; +  __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->sa->sa->len; +  __pyx_cur_scope->__pyx_v_N = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":50 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":50   *         N = self.sa.sa.len   *    *         ngram_starts = []             # <<<<<<<<<<<<<<   *         for n from 0 <= n < max_n:   *             ngram_starts.append(IntList(initial_len=N))   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_ngram_starts = __pyx_t_1; -  __pyx_t_1 = 0; +  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); +  __pyx_cur_scope->__pyx_v_ngram_starts = ((PyObject*)__pyx_t_2); +  __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":51 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":51   *    *         ngram_starts = []   *         for n from 0 <= n < max_n:             # <<<<<<<<<<<<<<   *             ngram_starts.append(IntList(initial_len=N))   *    */ -  __pyx_t_2 = __pyx_cur_scope->__pyx_v_max_n; -  for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_2; __pyx_cur_scope->__pyx_v_n++) { +  __pyx_t_1 = __pyx_cur_scope->__pyx_v_max_n; +  for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_1; __pyx_cur_scope->__pyx_v_n++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":52 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":52   *         ngram_starts = []   *         for n from 0 <= n < max_n:   *             ngram_starts.append(IntList(initial_len=N))             # <<<<<<<<<<<<<<   *    *         run_start = IntList(initial_len=max_n)   */ -    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); +    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(((PyObject *)__pyx_t_2));      __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -    __pyx_t_4 = PyList_Append(__pyx_cur_scope->__pyx_v_ngram_starts, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    __pyx_t_4 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_ngram_starts, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":54   *             ngram_starts.append(IntList(initial_len=N))   *    *         run_start = IntList(initial_len=max_n)             # <<<<<<<<<<<<<< @@ -22043,49 +22657,49 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_3)); -  __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_max_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_max_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __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_GIVEREF(__pyx_t_1); -  __pyx_cur_scope->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); -  __pyx_t_1 = 0; +  __Pyx_GIVEREF(__pyx_t_2); +  __pyx_cur_scope->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); +  __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":55 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":55   *    *         run_start = IntList(initial_len=max_n)   *         veb = VEB(N)             # <<<<<<<<<<<<<<   *    *         for i from 0 <= i < N:   */ -  __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_N); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __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 = 55; __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_t_1 = 0; -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  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*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -  __Pyx_GIVEREF(__pyx_t_1); -  __pyx_cur_scope->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_1); -  __pyx_t_1 = 0; +  __Pyx_GIVEREF(__pyx_t_2); +  __pyx_cur_scope->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_2); +  __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":57   *         veb = VEB(N)   *    *         for i from 0 <= i < N:             # <<<<<<<<<<<<<<   *             h = self.lcp.arr[i]   *             if h < 0:   */ -  __pyx_t_2 = __pyx_cur_scope->__pyx_v_N; -  for (__pyx_cur_scope->__pyx_v_i = 0; __pyx_cur_scope->__pyx_v_i < __pyx_t_2; __pyx_cur_scope->__pyx_v_i++) { +  __pyx_t_1 = __pyx_cur_scope->__pyx_v_N; +  for (__pyx_cur_scope->__pyx_v_i = 0; __pyx_cur_scope->__pyx_v_i < __pyx_t_1; __pyx_cur_scope->__pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":58 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":58   *    *         for i from 0 <= i < N:   *             h = self.lcp.arr[i]             # <<<<<<<<<<<<<< @@ -22094,17 +22708,17 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */      __pyx_cur_scope->__pyx_v_h = (__pyx_cur_scope->__pyx_v_self->lcp->arr[__pyx_cur_scope->__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":59 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":59   *         for i from 0 <= i < N:   *             h = self.lcp.arr[i]   *             if h < 0:             # <<<<<<<<<<<<<<   *                 h = 0   *             for n from h <= n < max_n:   */ -    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_h < 0); +    __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_h < 0) != 0);      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":60 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":60   *             h = self.lcp.arr[i]   *             if h < 0:   *                 h = 0             # <<<<<<<<<<<<<< @@ -22116,7 +22730,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen      }      __pyx_L8:; -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":61 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":61   *             if h < 0:   *                 h = 0   *             for n from h <= n < max_n:             # <<<<<<<<<<<<<< @@ -22126,7 +22740,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen      __pyx_t_6 = __pyx_cur_scope->__pyx_v_max_n;      for (__pyx_cur_scope->__pyx_v_n = __pyx_cur_scope->__pyx_v_h; __pyx_cur_scope->__pyx_v_n < __pyx_t_6; __pyx_cur_scope->__pyx_v_n++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":62 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":62   *                 h = 0   *             for n from h <= n < max_n:   *                 rs = run_start.arr[n]             # <<<<<<<<<<<<<< @@ -22135,7 +22749,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */        __pyx_cur_scope->__pyx_v_rs = (__pyx_cur_scope->__pyx_v_run_start->arr[__pyx_cur_scope->__pyx_v_n]); -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":63 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":63   *             for n from h <= n < max_n:   *                 rs = run_start.arr[n]   *                 run_start.arr[n] = i             # <<<<<<<<<<<<<< @@ -22144,7 +22758,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */        (__pyx_cur_scope->__pyx_v_run_start->arr[__pyx_cur_scope->__pyx_v_n]) = __pyx_cur_scope->__pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":64 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":64   *                 rs = run_start.arr[n]   *                 run_start.arr[n] = i   *                 freq = i - rs             # <<<<<<<<<<<<<< @@ -22153,17 +22767,17 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */        __pyx_cur_scope->__pyx_v_freq = (__pyx_cur_scope->__pyx_v_i - __pyx_cur_scope->__pyx_v_rs); -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":65 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":65   *                 run_start.arr[n] = i   *                 freq = i - rs   *                 if freq > 1000: # arbitrary, but see note below             # <<<<<<<<<<<<<<   *                     veb._insert(freq)   *                     ngram_start = ngram_starts[n]   */ -      __pyx_t_5 = (__pyx_cur_scope->__pyx_v_freq > 1000); +      __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_freq > 1000) != 0);        if (__pyx_t_5) { -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":66 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":66   *                 freq = i - rs   *                 if freq > 1000: # arbitrary, but see note below   *                     veb._insert(freq)             # <<<<<<<<<<<<<< @@ -22172,23 +22786,23 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */          ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_cur_scope->__pyx_v_veb->__pyx_vtab)->_insert(__pyx_cur_scope->__pyx_v_veb, __pyx_cur_scope->__pyx_v_freq); -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":67 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":67   *                 if freq > 1000: # arbitrary, but see note below   *                     veb._insert(freq)   *                     ngram_start = ngram_starts[n]             # <<<<<<<<<<<<<<   *                     while ngram_start.arr[freq] > 0:   *                         freq = freq + 1 # cheating a bit, should be ok for sparse histogram   */ -        __pyx_t_1 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong, 1, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));          __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start)); -        __Pyx_GIVEREF(__pyx_t_1); -        __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); -        __pyx_t_1 = 0; +        __Pyx_GIVEREF(__pyx_t_2); +        __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); +        __pyx_t_2 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":68 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":68   *                     veb._insert(freq)   *                     ngram_start = ngram_starts[n]   *                     while ngram_start.arr[freq] > 0:             # <<<<<<<<<<<<<< @@ -22196,10 +22810,10 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   *                     ngram_start.arr[freq] = rs   */          while (1) { -          __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_freq]) > 0); +          __pyx_t_5 = (((__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_freq]) > 0) != 0);            if (!__pyx_t_5) break; -          /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":69 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":69   *                     ngram_start = ngram_starts[n]   *                     while ngram_start.arr[freq] > 0:   *                         freq = freq + 1 # cheating a bit, should be ok for sparse histogram             # <<<<<<<<<<<<<< @@ -22209,7 +22823,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen            __pyx_cur_scope->__pyx_v_freq = (__pyx_cur_scope->__pyx_v_freq + 1);          } -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":70 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":70   *                     while ngram_start.arr[freq] > 0:   *                         freq = freq + 1 # cheating a bit, should be ok for sparse histogram   *                     ngram_start.arr[freq] = rs             # <<<<<<<<<<<<<< @@ -22223,16 +22837,17 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen      }    } -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":71   *                         freq = freq + 1 # cheating a bit, should be ok for sparse histogram   *                     ngram_start.arr[freq] = rs   *         i = veb.veb.min_val             # <<<<<<<<<<<<<<   *         while i != -1:   *             ii = veb._findsucc(i)   */ -  __pyx_cur_scope->__pyx_v_i = __pyx_cur_scope->__pyx_v_veb->veb->min_val; +  __pyx_t_1 = __pyx_cur_scope->__pyx_v_veb->veb->min_val; +  __pyx_cur_scope->__pyx_v_i = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":72 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":72   *                     ngram_start.arr[freq] = rs   *         i = veb.veb.min_val   *         while i != -1:             # <<<<<<<<<<<<<< @@ -22240,10 +22855,10 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   *             for n from 0 <= n < max_n:   */    while (1) { -    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_i != -1); +    __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_i != -1) != 0);      if (!__pyx_t_5) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":73 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":73   *         i = veb.veb.min_val   *         while i != -1:   *             ii = veb._findsucc(i)             # <<<<<<<<<<<<<< @@ -22252,33 +22867,33 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */      __pyx_cur_scope->__pyx_v_ii = ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_cur_scope->__pyx_v_veb->__pyx_vtab)->_findsucc(__pyx_cur_scope->__pyx_v_veb, __pyx_cur_scope->__pyx_v_i); -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":74 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":74   *         while i != -1:   *             ii = veb._findsucc(i)   *             for n from 0 <= n < max_n:             # <<<<<<<<<<<<<<   *                 ngram_start = ngram_starts[n]   *                 iii = i   */ -    __pyx_t_2 = __pyx_cur_scope->__pyx_v_max_n; -    for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_2; __pyx_cur_scope->__pyx_v_n++) { +    __pyx_t_1 = __pyx_cur_scope->__pyx_v_max_n; +    for (__pyx_cur_scope->__pyx_v_n = 0; __pyx_cur_scope->__pyx_v_n < __pyx_t_1; __pyx_cur_scope->__pyx_v_n++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":75 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":75   *             ii = veb._findsucc(i)   *             for n from 0 <= n < max_n:   *                 ngram_start = ngram_starts[n]             # <<<<<<<<<<<<<<   *                 iii = i   *                 rs = ngram_start.arr[iii]   */ -      __pyx_t_1 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_starts), __pyx_cur_scope->__pyx_v_n, sizeof(int), PyInt_FromLong, 1, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start));        __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram_start)); -      __Pyx_GIVEREF(__pyx_t_1); -      __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); -      __pyx_t_1 = 0; +      __Pyx_GIVEREF(__pyx_t_2); +      __pyx_cur_scope->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); +      __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":76 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":76   *             for n from 0 <= n < max_n:   *                 ngram_start = ngram_starts[n]   *                 iii = i             # <<<<<<<<<<<<<< @@ -22287,7 +22902,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */        __pyx_cur_scope->__pyx_v_iii = __pyx_cur_scope->__pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":77 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":77   *                 ngram_start = ngram_starts[n]   *                 iii = i   *                 rs = ngram_start.arr[iii]             # <<<<<<<<<<<<<< @@ -22296,7 +22911,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */        __pyx_cur_scope->__pyx_v_rs = (__pyx_cur_scope->__pyx_v_ngram_start->arr[__pyx_cur_scope->__pyx_v_iii]); -      /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":78 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":78   *                 iii = i   *                 rs = ngram_start.arr[iii]   *                 while (ii==-1 or iii < ii) and rs != 0:             # <<<<<<<<<<<<<< @@ -22304,22 +22919,22 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   *                     valid = 1   */        while (1) { -        __pyx_t_5 = (__pyx_cur_scope->__pyx_v_ii == -1); +        __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_ii == -1) != 0);          if (!__pyx_t_5) { -          __pyx_t_7 = (__pyx_cur_scope->__pyx_v_iii < __pyx_cur_scope->__pyx_v_ii); +          __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_iii < __pyx_cur_scope->__pyx_v_ii) != 0);            __pyx_t_8 = __pyx_t_7;          } else {            __pyx_t_8 = __pyx_t_5;          }          if (__pyx_t_8) { -          __pyx_t_5 = (__pyx_cur_scope->__pyx_v_rs != 0); +          __pyx_t_5 = ((__pyx_cur_scope->__pyx_v_rs != 0) != 0);            __pyx_t_7 = __pyx_t_5;          } else {            __pyx_t_7 = __pyx_t_8;          }          if (!__pyx_t_7) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":79 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":79   *                 rs = ngram_start.arr[iii]   *                 while (ii==-1 or iii < ii) and rs != 0:   *                     j = self.sa.sa.arr[rs]             # <<<<<<<<<<<<<< @@ -22328,7 +22943,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */          __pyx_cur_scope->__pyx_v_j = (__pyx_cur_scope->__pyx_v_self->sa->sa->arr[__pyx_cur_scope->__pyx_v_rs]); -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":80 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":80   *                 while (ii==-1 or iii < ii) and rs != 0:   *                     j = self.sa.sa.arr[rs]   *                     valid = 1             # <<<<<<<<<<<<<< @@ -22337,7 +22952,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */          __pyx_cur_scope->__pyx_v_valid = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":81 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":81   *                     j = self.sa.sa.arr[rs]   *                     valid = 1   *                     for k from 0 <= k < n+1:             # <<<<<<<<<<<<<< @@ -22347,17 +22962,17 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen          __pyx_t_9 = (__pyx_cur_scope->__pyx_v_n + 1);          for (__pyx_cur_scope->__pyx_v_k = 0; __pyx_cur_scope->__pyx_v_k < __pyx_t_9; __pyx_cur_scope->__pyx_v_k++) { -          /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":82 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":82   *                     valid = 1   *                     for k from 0 <= k < n+1:   *                         if self.sa.darray.data.arr[j+k] < 2:             # <<<<<<<<<<<<<<   *                             valid = 0   *                     if valid:   */ -          __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_self->sa->darray->data->arr[(__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_k)]) < 2); +          __pyx_t_7 = (((__pyx_cur_scope->__pyx_v_self->sa->darray->data->arr[(__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_k)]) < 2) != 0);            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":83 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":83   *                     for k from 0 <= k < n+1:   *                         if self.sa.darray.data.arr[j+k] < 2:   *                             valid = 0             # <<<<<<<<<<<<<< @@ -22370,42 +22985,43 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen            __pyx_L22:;          } -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":84 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":84   *                         if self.sa.darray.data.arr[j+k] < 2:   *                             valid = 0   *                     if valid:             # <<<<<<<<<<<<<<   *                         ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])   *                         yield i, n+1, ngram   */ -        if (__pyx_cur_scope->__pyx_v_valid) { +        __pyx_t_7 = (__pyx_cur_scope->__pyx_v_valid != 0); +        if (__pyx_t_7) { -          /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":85 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":85   *                             valid = 0   *                     if valid:   *                         ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])             # <<<<<<<<<<<<<<   *                         yield i, n+1, ngram   *                     iii = iii + 1   */ -          __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __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[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_2);            __pyx_t_9 = (__pyx_cur_scope->__pyx_v_n + 1);            for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_9; __pyx_t_6+=1) {              __pyx_cur_scope->__pyx_v_k = __pyx_t_6;              __pyx_t_3 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_self->sa->darray->data->arr[(__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_k)])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3); -            if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;            } -          __pyx_t_3 = ((PyObject *)PyList_AsTuple(__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_2))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(((PyObject *)__pyx_t_3)); -          __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));            __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -          __pyx_cur_scope->__pyx_v_ngram = __pyx_t_3; +          __pyx_cur_scope->__pyx_v_ngram = ((PyObject*)__pyx_t_3);            __pyx_t_3 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":86 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":86   *                     if valid:   *                         ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])   *                         yield i, n+1, ngram             # <<<<<<<<<<<<<< @@ -22414,35 +23030,35 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */            __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __pyx_t_1 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_n + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_1); +          __pyx_t_2 = PyInt_FromLong((__pyx_cur_scope->__pyx_v_n + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_2);            __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);            __Pyx_GIVEREF(__pyx_t_3); -          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1); -          __Pyx_GIVEREF(__pyx_t_1); +          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2); +          __Pyx_GIVEREF(__pyx_t_2);            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));            PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_ngram));            __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_ngram));            __pyx_t_3 = 0; -          __pyx_t_1 = 0; +          __pyx_t_2 = 0;            __pyx_r = ((PyObject *)__pyx_t_10);            __pyx_t_10 = 0; -          __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; +          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;            __Pyx_XGIVEREF(__pyx_r);            __Pyx_RefNannyFinishContext();            /* return from generator, yielding value */            __pyx_generator->resume_label = 1;            return __pyx_r;            __pyx_L26_resume_from_yield:; -          __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; +          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;            if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            goto __pyx_L23;          }          __pyx_L23:; -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":87 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":87   *                         ngram = tuple([self.sa.darray.data.arr[j+k] for k in range(n+1)])   *                         yield i, n+1, ngram   *                     iii = iii + 1             # <<<<<<<<<<<<<< @@ -22451,7 +23067,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen   */          __pyx_cur_scope->__pyx_v_iii = (__pyx_cur_scope->__pyx_v_iii + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":88 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":88   *                         yield i, n+1, ngram   *                     iii = iii + 1   *                     rs = ngram_start.arr[iii]             # <<<<<<<<<<<<<< @@ -22461,7 +23077,7 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen        }      } -    /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":89 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":89   *                     iii = iii + 1   *                     rs = ngram_start.arr[iii]   *             i = ii             # <<<<<<<<<<<<<< @@ -22471,13 +23087,14 @@ static PyObject *__pyx_gb_3_sa_3LCP_4generator1(__pyx_GeneratorObject *__pyx_gen    PyErr_SetNone(PyExc_StopIteration);    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_10);    __Pyx_AddTraceback("compute_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } @@ -22496,7 +23113,7 @@ static int __pyx_pw_3_sa_8Alphabet_1__cinit__(PyObject *__pyx_v_self, PyObject *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":12 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":12   *     cdef dict id2sym   *    *     def __cinit__(self):             # <<<<<<<<<<<<<< @@ -22513,7 +23130,7 @@ static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":13 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":13   *    *     def __cinit__(self):   *         self.terminals = StringMap()             # <<<<<<<<<<<<<< @@ -22528,7 +23145,7 @@ static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__p    __pyx_v_self->terminals = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":14   *     def __cinit__(self):   *         self.terminals = StringMap()   *         self.nonterminals = StringMap()             # <<<<<<<<<<<<<< @@ -22543,7 +23160,7 @@ static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__p    __pyx_v_self->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":15   *         self.terminals = StringMap()   *         self.nonterminals = StringMap()   *         self.id2sym = {}             # <<<<<<<<<<<<<< @@ -22555,10 +23172,10 @@ static int __pyx_pf_3_sa_8Alphabet___cinit__(struct __pyx_obj_3_sa_Alphabet *__p    __Pyx_GIVEREF(((PyObject *)__pyx_t_1));    __Pyx_GOTREF(__pyx_v_self->id2sym);    __Pyx_DECREF(((PyObject *)__pyx_v_self->id2sym)); -  __pyx_v_self->id2sym = __pyx_t_1; +  __pyx_v_self->id2sym = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":16 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":16   *         self.nonterminals = StringMap()   *         self.id2sym = {}   *         self.first_nonterminal = -1             # <<<<<<<<<<<<<< @@ -22587,7 +23204,7 @@ static void __pyx_pw_3_sa_8Alphabet_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":18 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":18   *         self.first_nonterminal = -1   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -22602,7 +23219,7 @@ static void __pyx_pf_3_sa_8Alphabet_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":21 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":21   *         pass   *    *     cdef int isvar(self, int sym):             # <<<<<<<<<<<<<< @@ -22615,7 +23232,7 @@ static int __pyx_f_3_sa_8Alphabet_isvar(CYTHON_UNUSED struct __pyx_obj_3_sa_Alph    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("isvar", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":22   *    *     cdef int isvar(self, int sym):   *         return sym < 0             # <<<<<<<<<<<<<< @@ -22631,7 +23248,7 @@ static int __pyx_f_3_sa_8Alphabet_isvar(CYTHON_UNUSED struct __pyx_obj_3_sa_Alph    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":24 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":24   *         return sym < 0   *    *     cdef int isword(self, int sym):             # <<<<<<<<<<<<<< @@ -22644,7 +23261,7 @@ static int __pyx_f_3_sa_8Alphabet_isword(CYTHON_UNUSED struct __pyx_obj_3_sa_Alp    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("isword", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":25 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":25   *    *     cdef int isword(self, int sym):   *         return sym >= 0             # <<<<<<<<<<<<<< @@ -22660,7 +23277,7 @@ static int __pyx_f_3_sa_8Alphabet_isword(CYTHON_UNUSED struct __pyx_obj_3_sa_Alp    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":27 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":27   *         return sym >= 0   *    *     cdef int getindex(self, int sym):             # <<<<<<<<<<<<<< @@ -22673,7 +23290,7 @@ static int __pyx_f_3_sa_8Alphabet_getindex(CYTHON_UNUSED struct __pyx_obj_3_sa_A    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("getindex", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":28 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":28   *    *     cdef int getindex(self, int sym):   *         return -sym & INDEX_MASK             # <<<<<<<<<<<<<< @@ -22689,7 +23306,7 @@ static int __pyx_f_3_sa_8Alphabet_getindex(CYTHON_UNUSED struct __pyx_obj_3_sa_A    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":30 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":30   *         return -sym & INDEX_MASK   *    *     cdef int setindex(self, int sym, int ind):             # <<<<<<<<<<<<<< @@ -22702,7 +23319,7 @@ static int __pyx_f_3_sa_8Alphabet_setindex(CYTHON_UNUSED struct __pyx_obj_3_sa_A    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("setindex", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":31   *    *     cdef int setindex(self, int sym, int ind):   *         return -(-sym & ~INDEX_MASK | ind)             # <<<<<<<<<<<<<< @@ -22718,7 +23335,7 @@ static int __pyx_f_3_sa_8Alphabet_setindex(CYTHON_UNUSED struct __pyx_obj_3_sa_A    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":33 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":33   *         return -(-sym & ~INDEX_MASK | ind)   *    *     cdef int clearindex(self, int sym):             # <<<<<<<<<<<<<< @@ -22731,7 +23348,7 @@ static int __pyx_f_3_sa_8Alphabet_clearindex(CYTHON_UNUSED struct __pyx_obj_3_sa    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("clearindex", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":34   *    *     cdef int clearindex(self, int sym):   *         return -(-sym& ~INDEX_MASK)             # <<<<<<<<<<<<<< @@ -22747,7 +23364,7 @@ static int __pyx_f_3_sa_8Alphabet_clearindex(CYTHON_UNUSED struct __pyx_obj_3_sa    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":36 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":36   *         return -(-sym& ~INDEX_MASK)   *    *     cdef int match(self, int sym1, int sym2):             # <<<<<<<<<<<<<< @@ -22760,7 +23377,7 @@ static int __pyx_f_3_sa_8Alphabet_match(struct __pyx_obj_3_sa_Alphabet *__pyx_v_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("match", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":37 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":37   *    *     cdef int match(self, int sym1, int sym2):   *         return self.clearindex(sym1) == self.clearindex(sym2);             # <<<<<<<<<<<<<< @@ -22776,7 +23393,7 @@ static int __pyx_f_3_sa_8Alphabet_match(struct __pyx_obj_3_sa_Alphabet *__pyx_v_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":39 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":39   *         return self.clearindex(sym1) == self.clearindex(sym2);   *    *     cdef char* tocat(self, int sym):             # <<<<<<<<<<<<<< @@ -22789,7 +23406,7 @@ static char *__pyx_f_3_sa_8Alphabet_tocat(struct __pyx_obj_3_sa_Alphabet *__pyx_    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("tocat", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":40   *    *     cdef char* tocat(self, int sym):   *         return self.nonterminals.word((-sym >> INDEX_SHIFT)-1)             # <<<<<<<<<<<<<< @@ -22805,7 +23422,7 @@ static char *__pyx_f_3_sa_8Alphabet_tocat(struct __pyx_obj_3_sa_Alphabet *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":42 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":42   *         return self.nonterminals.word((-sym >> INDEX_SHIFT)-1)   *    *     cdef int fromcat(self, char *s):             # <<<<<<<<<<<<<< @@ -22820,7 +23437,7 @@ static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_    int __pyx_t_1;    __Pyx_RefNannySetupContext("fromcat", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":44 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":44   *     cdef int fromcat(self, char *s):   *         cdef int i   *         i = self.nonterminals.index(s)             # <<<<<<<<<<<<<< @@ -22829,17 +23446,17 @@ static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_   */    __pyx_v_i = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->nonterminals->__pyx_vtab)->index(__pyx_v_self->nonterminals, __pyx_v_s); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":45 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":45   *         cdef int i   *         i = self.nonterminals.index(s)   *         if self.first_nonterminal == -1:             # <<<<<<<<<<<<<<   *             self.first_nonterminal = i   *         if i > self.last_nonterminal:   */ -  __pyx_t_1 = (__pyx_v_self->first_nonterminal == -1); +  __pyx_t_1 = ((__pyx_v_self->first_nonterminal == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":46 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":46   *         i = self.nonterminals.index(s)   *         if self.first_nonterminal == -1:   *             self.first_nonterminal = i             # <<<<<<<<<<<<<< @@ -22851,17 +23468,17 @@ static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":47 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":47   *         if self.first_nonterminal == -1:   *             self.first_nonterminal = i   *         if i > self.last_nonterminal:             # <<<<<<<<<<<<<<   *             self.last_nonterminal = i   *         return -(i+1 << INDEX_SHIFT)   */ -  __pyx_t_1 = (__pyx_v_i > __pyx_v_self->last_nonterminal); +  __pyx_t_1 = ((__pyx_v_i > __pyx_v_self->last_nonterminal) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":48 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":48   *             self.first_nonterminal = i   *         if i > self.last_nonterminal:   *             self.last_nonterminal = i             # <<<<<<<<<<<<<< @@ -22873,7 +23490,7 @@ static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":49 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":49   *         if i > self.last_nonterminal:   *             self.last_nonterminal = i   *         return -(i+1 << INDEX_SHIFT)             # <<<<<<<<<<<<<< @@ -22889,7 +23506,7 @@ static int __pyx_f_3_sa_8Alphabet_fromcat(struct __pyx_obj_3_sa_Alphabet *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":51 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":51   *         return -(i+1 << INDEX_SHIFT)   *    *     cdef char* tostring(self, int sym):             # <<<<<<<<<<<<<< @@ -22912,17 +23529,17 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("tostring", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":53 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":53   *     cdef char* tostring(self, int sym):   *         cdef int ind   *         if self.isvar(sym):             # <<<<<<<<<<<<<<   *             if sym in self.id2sym:   *                 return self.id2sym[sym]   */ -  __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->isvar(__pyx_v_self, __pyx_v_sym); +  __pyx_t_1 = (((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->isvar(__pyx_v_self, __pyx_v_sym) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":54 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":54   *         cdef int ind   *         if self.isvar(sym):   *             if sym in self.id2sym:             # <<<<<<<<<<<<<< @@ -22932,22 +23549,28 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p      __pyx_t_2 = PyInt_FromLong(__pyx_v_sym); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) { -      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}  +      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +      {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } -    __pyx_t_3 = ((PyDict_Contains(((PyObject *)__pyx_v_self->id2sym), __pyx_t_2))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = (__Pyx_PyDict_Contains(__pyx_t_2, ((PyObject *)__pyx_v_self->id2sym), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_3 = (__pyx_t_1 != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":55 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":55   *         if self.isvar(sym):   *             if sym in self.id2sym:   *                 return self.id2sym[sym]             # <<<<<<<<<<<<<<   *             ind = self.getindex(sym)   *             if ind > 0:   */ -      __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyBytes_AsString(__pyx_t_2); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __pyx_r = __pyx_t_4;        goto __pyx_L0; @@ -22955,7 +23578,7 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":56 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":56   *             if sym in self.id2sym:   *                 return self.id2sym[sym]   *             ind = self.getindex(sym)             # <<<<<<<<<<<<<< @@ -22964,24 +23587,24 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p   */      __pyx_v_ind = ((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->getindex(__pyx_v_self, __pyx_v_sym); -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":57 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":57   *                 return self.id2sym[sym]   *             ind = self.getindex(sym)   *             if ind > 0:             # <<<<<<<<<<<<<<   *                 self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)   *             else:   */ -    __pyx_t_3 = (__pyx_v_ind > 0); +    __pyx_t_3 = ((__pyx_v_ind > 0) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":58 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":58   *             ind = self.getindex(sym)   *             if ind > 0:   *                 self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)             # <<<<<<<<<<<<<<   *             else:   *                 self.id2sym[sym] = "[%s]" % self.tocat(sym)   */ -      __pyx_t_2 = PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_2));        __pyx_t_5 = PyInt_FromLong(__pyx_v_ind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); @@ -22993,42 +23616,54 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p        __Pyx_GIVEREF(__pyx_t_5);        __pyx_t_2 = 0;        __pyx_t_5 = 0; -      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_64), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_66), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_5));        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -      if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_5), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_5), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;        goto __pyx_L5;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":60 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":60   *                 self.id2sym[sym] = "[%s,%d]" % (self.tocat(sym), ind)   *             else:   *                 self.id2sym[sym] = "[%s]" % self.tocat(sym)             # <<<<<<<<<<<<<<   *             return self.id2sym[sym]   *         else:   */ -      __pyx_t_5 = PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_Alphabet *)__pyx_v_self->__pyx_vtab)->tocat(__pyx_v_self, __pyx_v_sym)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_5)); -      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_65), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_67), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_6));        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; -      if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_6), sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      if (__Pyx_SetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, ((PyObject *)__pyx_t_6), sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":61 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":61   *             else:   *                 self.id2sym[sym] = "[%s]" % self.tocat(sym)   *             return self.id2sym[sym]             # <<<<<<<<<<<<<<   *         else:   *             return self.terminals.word(sym)   */ -    __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(((PyObject *)__pyx_v_self->id2sym) == Py_None)) { +      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +      {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    } +    __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->id2sym), __pyx_v_sym, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_4 = PyBytes_AsString(__pyx_t_6); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_r = __pyx_t_4;      goto __pyx_L0; @@ -23036,7 +23671,7 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":63 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":63   *             return self.id2sym[sym]   *         else:   *             return self.terminals.word(sym)             # <<<<<<<<<<<<<< @@ -23061,7 +23696,7 @@ static char *__pyx_f_3_sa_8Alphabet_tostring(struct __pyx_obj_3_sa_Alphabet *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":65 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":65   *             return self.terminals.word(sym)   *    *     cdef int fromstring(self, char *s, bint terminal):             # <<<<<<<<<<<<<< @@ -23089,7 +23724,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("fromstring", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":69 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":69   *         cdef char *comma   *         cdef int n   *         n = strlen(s)             # <<<<<<<<<<<<<< @@ -23098,7 +23733,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */    __pyx_v_n = strlen(__pyx_v_s); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":71   *         n = strlen(s)   *         cdef char *sep   *         sep = strstr(s,"_SEP_")             # <<<<<<<<<<<<<< @@ -23107,20 +23742,20 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */    __pyx_v_sep = strstr(__pyx_v_s, __pyx_k___SEP_); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":72 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":72   *         cdef char *sep   *         sep = strstr(s,"_SEP_")   *         if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:             # <<<<<<<<<<<<<<   *             if terminal:   *                 s1 = "\\"+s   */ -  __pyx_t_1 = (__pyx_v_n >= 3); +  __pyx_t_1 = ((__pyx_v_n >= 3) != 0);    if (__pyx_t_1) { -    __pyx_t_2 = ((__pyx_v_s[0]) == '['); +    __pyx_t_2 = (((__pyx_v_s[0]) == '[') != 0);      if (__pyx_t_2) { -      __pyx_t_3 = ((__pyx_v_s[(__pyx_v_n - 1)]) == ']'); +      __pyx_t_3 = (((__pyx_v_s[(__pyx_v_n - 1)]) == ']') != 0);        if (__pyx_t_3) { -        __pyx_t_4 = (__pyx_v_sep == NULL); +        __pyx_t_4 = ((__pyx_v_sep == NULL) != 0);          __pyx_t_5 = __pyx_t_4;        } else {          __pyx_t_5 = __pyx_t_3; @@ -23135,45 +23770,46 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p    }    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":73 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":73   *         sep = strstr(s,"_SEP_")   *         if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:   *             if terminal:             # <<<<<<<<<<<<<<   *                 s1 = "\\"+s   *                 return self.terminals.index(s1)   */ -    if (__pyx_v_terminal) { +    __pyx_t_2 = (__pyx_v_terminal != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":74 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":74   *         if n >= 3 and s[0] == c'[' and s[n-1] == c']' and sep == NULL:   *             if terminal:   *                 s1 = "\\"+s             # <<<<<<<<<<<<<<   *                 return self.terminals.index(s1)   *             s[n-1] = c'\0'   */ -      __pyx_t_6 = PyBytes_FromString(__pyx_v_s); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_s); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_6)); -      __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_kp_s_66), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_kp_s_68), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;        __pyx_v_s1 = __pyx_t_7;        __pyx_t_7 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":75 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":75   *             if terminal:   *                 s1 = "\\"+s   *                 return self.terminals.index(s1)             # <<<<<<<<<<<<<<   *             s[n-1] = c'\0'   *             s = s + 1   */ -      __pyx_t_8 = PyBytes_AsString(__pyx_v_s1); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_s1); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_r = ((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_self->terminals->__pyx_vtab)->index(__pyx_v_self->terminals, __pyx_t_8);        goto __pyx_L0;        goto __pyx_L4;      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":76 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":76   *                 s1 = "\\"+s   *                 return self.terminals.index(s1)   *             s[n-1] = c'\0'             # <<<<<<<<<<<<<< @@ -23182,7 +23818,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */      (__pyx_v_s[(__pyx_v_n - 1)]) = '\x00'; -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":77 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":77   *                 return self.terminals.index(s1)   *             s[n-1] = c'\0'   *             s = s + 1             # <<<<<<<<<<<<<< @@ -23191,7 +23827,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */      __pyx_v_s = (__pyx_v_s + 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":78 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":78   *             s[n-1] = c'\0'   *             s = s + 1   *             comma = strrchr(s, c',')             # <<<<<<<<<<<<<< @@ -23200,17 +23836,17 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */      __pyx_v_comma = strrchr(__pyx_v_s, ','); -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":79 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":79   *             s = s + 1   *             comma = strrchr(s, c',')   *             if comma != NULL:             # <<<<<<<<<<<<<<   *                 comma[0] = c'\0'   *                 return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))   */ -    __pyx_t_2 = (__pyx_v_comma != NULL); +    __pyx_t_2 = ((__pyx_v_comma != NULL) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":80 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":80   *             comma = strrchr(s, c',')   *             if comma != NULL:   *                 comma[0] = c'\0'             # <<<<<<<<<<<<<< @@ -23219,7 +23855,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p   */        (__pyx_v_comma[0]) = '\x00'; -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":81 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":81   *             if comma != NULL:   *                 comma[0] = c'\0'   *                 return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))             # <<<<<<<<<<<<<< @@ -23232,7 +23868,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":83 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":83   *                 return self.setindex(self.fromcat(s), strtol(comma+1, NULL, 10))   *             else:   *                 return self.fromcat(s)             # <<<<<<<<<<<<<< @@ -23247,7 +23883,7 @@ static int __pyx_f_3_sa_8Alphabet_fromstring(struct __pyx_obj_3_sa_Alphabet *__p    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":85 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":85   *                 return self.fromcat(s)   *         else:   *             return self.terminals.index(s)             # <<<<<<<<<<<<<< @@ -23283,7 +23919,7 @@ static PyObject *__pyx_pw_3_sa_8Alphabet_9terminals_1__get__(PyObject *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":8 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":8   *    * cdef class Alphabet:   *     cdef readonly StringMap terminals, nonterminals             # <<<<<<<<<<<<<< @@ -23334,7 +23970,7 @@ static PyObject *__pyx_pf_3_sa_8Alphabet_12nonterminals___get__(struct __pyx_obj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":89 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":89   * cdef Alphabet ALPHABET = Alphabet()   *    * cdef char* sym_tostring(int sym):             # <<<<<<<<<<<<<< @@ -23347,7 +23983,7 @@ static char *__pyx_f_3_sa_sym_tostring(int __pyx_v_sym) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_tostring", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":90 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":90   *    * cdef char* sym_tostring(int sym):   *     return ALPHABET.tostring(sym)             # <<<<<<<<<<<<<< @@ -23363,7 +23999,7 @@ static char *__pyx_f_3_sa_sym_tostring(int __pyx_v_sym) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":92 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":92   *     return ALPHABET.tostring(sym)   *    * cdef char* sym_tocat(int sym):             # <<<<<<<<<<<<<< @@ -23376,7 +24012,7 @@ static char *__pyx_f_3_sa_sym_tocat(int __pyx_v_sym) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_tocat", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":93 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":93   *    * cdef char* sym_tocat(int sym):   *     return ALPHABET.tocat(sym)             # <<<<<<<<<<<<<< @@ -23392,7 +24028,7 @@ static char *__pyx_f_3_sa_sym_tocat(int __pyx_v_sym) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":95 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":95   *     return ALPHABET.tocat(sym)   *    * cdef int sym_isvar(int sym):             # <<<<<<<<<<<<<< @@ -23405,7 +24041,7 @@ static int __pyx_f_3_sa_sym_isvar(int __pyx_v_sym) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_isvar", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":96 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":96   *    * cdef int sym_isvar(int sym):   *     return ALPHABET.isvar(sym)             # <<<<<<<<<<<<<< @@ -23421,7 +24057,7 @@ static int __pyx_f_3_sa_sym_isvar(int __pyx_v_sym) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":98 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":98   *     return ALPHABET.isvar(sym)   *    * cdef int sym_getindex(int sym):             # <<<<<<<<<<<<<< @@ -23434,7 +24070,7 @@ static int __pyx_f_3_sa_sym_getindex(int __pyx_v_sym) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_getindex", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":99 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":99   *    * cdef int sym_getindex(int sym):   *     return ALPHABET.getindex(sym)             # <<<<<<<<<<<<<< @@ -23450,7 +24086,7 @@ static int __pyx_f_3_sa_sym_getindex(int __pyx_v_sym) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":101 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":101   *     return ALPHABET.getindex(sym)   *    * cdef int sym_setindex(int sym, int id):             # <<<<<<<<<<<<<< @@ -23463,7 +24099,7 @@ static int __pyx_f_3_sa_sym_setindex(int __pyx_v_sym, int __pyx_v_id) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_setindex", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":102 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":102   *    * cdef int sym_setindex(int sym, int id):   *     return ALPHABET.setindex(sym, id)             # <<<<<<<<<<<<<< @@ -23479,7 +24115,7 @@ static int __pyx_f_3_sa_sym_setindex(int __pyx_v_sym, int __pyx_v_id) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":104 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":104   *     return ALPHABET.setindex(sym, id)   *    * cdef int sym_fromstring(char* string, bint terminal):             # <<<<<<<<<<<<<< @@ -23492,7 +24128,7 @@ static int __pyx_f_3_sa_sym_fromstring(char *__pyx_v_string, int __pyx_v_termina    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sym_fromstring", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":105 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":105   *    * cdef int sym_fromstring(char* string, bint terminal):   *     return ALPHABET.fromstring(string, terminal)             # <<<<<<<<<<<<<< @@ -23515,13 +24151,12 @@ static PyObject *__pyx_pw_3_sa_5isvar(PyObject *__pyx_self, PyObject *__pyx_v_sy    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("isvar (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_4isvar(__pyx_self, ((PyObject *)__pyx_v_sym));    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":107 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107   *     return ALPHABET.fromstring(string, terminal)   *    * def isvar(sym):             # <<<<<<<<<<<<<< @@ -23539,7 +24174,7 @@ static PyObject *__pyx_pf_3_sa_4isvar(CYTHON_UNUSED PyObject *__pyx_self, PyObje    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("isvar", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":108 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":108   *    * def isvar(sym):   *     return sym_isvar(sym)             # <<<<<<<<<<<<<< @@ -23573,14 +24208,13 @@ static PyObject *__pyx_pw_3_sa_7make_lattice(PyObject *__pyx_self, PyObject *__p    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("make_lattice (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_6make_lattice(__pyx_self, ((PyObject *)__pyx_v_words));    __Pyx_RefNannyFinishContext();    return __pyx_r;  }  static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":111 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111   *    * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -23596,7 +24230,7 @@ static PyObject *__pyx_pf_3_sa_12make_lattice_genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -23633,6 +24267,9 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    char *__pyx_t_5; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -23656,10 +24293,18 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -23676,7 +24321,7 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_5 = PyBytes_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_r = __pyx_t_4; @@ -23708,12 +24353,13 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_2generator7(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  }  static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":112 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112   * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)   *     return tuple(((word, None, 1), ) for word in word_ids)             # <<<<<<<<<<<<<< @@ -23729,7 +24375,7 @@ static PyObject *__pyx_pf_3_sa_12make_lattice_3genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -23766,6 +24412,9 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -23789,10 +24438,18 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -23855,11 +24512,12 @@ static PyObject *__pyx_gb_3_sa_12make_lattice_5generator8(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":110 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110   *     return sym_isvar(sym)   *    * def make_lattice(words):             # <<<<<<<<<<<<<< @@ -23877,7 +24535,7 @@ static PyObject *__pyx_pf_3_sa_6make_lattice(CYTHON_UNUSED PyObject *__pyx_self,    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("make_lattice", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(__pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -23887,7 +24545,7 @@ static PyObject *__pyx_pf_3_sa_6make_lattice(CYTHON_UNUSED PyObject *__pyx_self,    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_words);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_words); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":111 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":111   *    * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -23900,7 +24558,7 @@ static PyObject *__pyx_pf_3_sa_6make_lattice(CYTHON_UNUSED PyObject *__pyx_self,    __pyx_cur_scope->__pyx_v_word_ids = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":112 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":112   * def make_lattice(words):   *     word_ids = (sym_fromstring(word, True) for word in words)   *     return tuple(((word, None, 1), ) for word in word_ids)             # <<<<<<<<<<<<<< @@ -23943,14 +24601,13 @@ static PyObject *__pyx_pw_3_sa_9decode_lattice(PyObject *__pyx_self, PyObject *_    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("decode_lattice (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_8decode_lattice(__pyx_self, ((PyObject *)__pyx_v_lattice));    __Pyx_RefNannyFinishContext();    return __pyx_r;  }  static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":115 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115   *    * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc             # <<<<<<<<<<<<<< @@ -23966,7 +24623,7 @@ static PyObject *__pyx_pf_3_sa_14decode_lattice_genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24012,6 +24669,9 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec    Py_ssize_t __pyx_t_12;    PyObject *(*__pyx_t_13)(PyObject *);    int __pyx_t_14; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -24024,7 +24684,7 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":116 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":116   * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc   *             for arc in node for node in lattice)             # <<<<<<<<<<<<<< @@ -24042,7 +24702,7 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec    }    for (;;) { -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":115 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115   *    * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc             # <<<<<<<<<<<<<< @@ -24051,10 +24711,18 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec   */      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -24068,21 +24736,22 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec      }      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {        PyObject* sequence = __pyx_t_4; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyList_GET_ITEM(sequence, 0);           __pyx_t_6 = PyList_GET_ITEM(sequence, 1);           __pyx_t_7 = PyList_GET_ITEM(sequence, 2);  @@ -24090,8 +24759,17 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec        __Pyx_INCREF(__pyx_t_5);        __Pyx_INCREF(__pyx_t_6);        __Pyx_INCREF(__pyx_t_7); +      #else +      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_7); +      #endif        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); @@ -24104,12 +24782,13 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec        index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;        __Pyx_GOTREF(__pyx_t_7);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = NULL;        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        goto __pyx_L7_unpacking_done;        __pyx_L6_unpacking_failed:;        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_9 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L7_unpacking_done:;      } @@ -24129,7 +24808,7 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec      __pyx_cur_scope->__pyx_v_dist = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":116 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":116   * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc   *             for arc in node for node in lattice)             # <<<<<<<<<<<<<< @@ -24148,10 +24827,18 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec      for (;;) {        if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_4)) {          if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break; -        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_4)) {          if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_7 = __pyx_t_11(__pyx_t_4);          if (unlikely(!__pyx_t_7)) { @@ -24180,10 +24867,18 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec        for (;;) {          if (!__pyx_t_13 && PyList_CheckExact(__pyx_t_7)) {            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_7)) break; -          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else if (!__pyx_t_13 && PyTuple_CheckExact(__pyx_t_7)) {            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_7)) break; -          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else {            __pyx_t_6 = __pyx_t_13(__pyx_t_7);            if (unlikely(!__pyx_t_6)) { @@ -24201,7 +24896,7 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec          __pyx_cur_scope->__pyx_v_node = __pyx_t_6;          __pyx_t_6 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":115 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115   *    * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc             # <<<<<<<<<<<<<< @@ -24209,7 +24904,7 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec   *    */          __pyx_t_14 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_6 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_14)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_14)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(((PyObject *)__pyx_t_6));          __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_5); @@ -24277,11 +24972,12 @@ static PyObject *__pyx_gb_3_sa_14decode_lattice_2generator9(__pyx_GeneratorObjec    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":114 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114   *     return tuple(((word, None, 1), ) for word in word_ids)   *    * def decode_lattice(lattice):             # <<<<<<<<<<<<<< @@ -24299,7 +24995,7 @@ static PyObject *__pyx_pf_3_sa_8decode_lattice(CYTHON_UNUSED PyObject *__pyx_sel    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("decode_lattice", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(__pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24309,7 +25005,7 @@ static PyObject *__pyx_pf_3_sa_8decode_lattice(CYTHON_UNUSED PyObject *__pyx_sel    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_lattice);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_lattice); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":115 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":115   *    * def decode_lattice(lattice):   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc             # <<<<<<<<<<<<<< @@ -24352,14 +25048,13 @@ static PyObject *__pyx_pw_3_sa_11decode_sentence(PyObject *__pyx_self, PyObject    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("decode_sentence (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_10decode_sentence(__pyx_self, ((PyObject *)__pyx_v_lattice));    __Pyx_RefNannyFinishContext();    return __pyx_r;  }  static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":119 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119   *    * def decode_sentence(lattice):   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)             # <<<<<<<<<<<<<< @@ -24375,7 +25070,7 @@ static PyObject *__pyx_pf_3_sa_15decode_sentence_genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_10_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24418,6 +25113,9 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj    PyObject *__pyx_t_9 = NULL;    PyObject *__pyx_t_10 = NULL;    int __pyx_t_11; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -24441,10 +25139,18 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -24458,24 +25164,30 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj      }      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {        PyObject* sequence = __pyx_t_4; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 1)) { +        if (size > 1) __Pyx_RaiseTooManyValuesError(1); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 1)) { -          if (PyTuple_GET_SIZE(sequence) > 1) __Pyx_RaiseTooManyValuesError(1); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 1)) { -          if (PyList_GET_SIZE(sequence) > 1) __Pyx_RaiseTooManyValuesError(1); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyList_GET_ITEM(sequence, 0);         }        __Pyx_INCREF(__pyx_t_5); +      #else +      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      #endif        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); @@ -24484,32 +25196,34 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj        index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;        __Pyx_GOTREF(__pyx_t_5);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = NULL;        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        goto __pyx_L7_unpacking_done;        __pyx_L6_unpacking_failed:;        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_7 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L7_unpacking_done:;      }      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {        PyObject* sequence = __pyx_t_5; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_6 = PyList_GET_ITEM(sequence, 0);           __pyx_t_8 = PyList_GET_ITEM(sequence, 1);           __pyx_t_9 = PyList_GET_ITEM(sequence, 2);  @@ -24517,8 +25231,17 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj        __Pyx_INCREF(__pyx_t_6);        __Pyx_INCREF(__pyx_t_8);        __Pyx_INCREF(__pyx_t_9); +      #else +      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_9 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_9); +      #endif        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10); @@ -24531,12 +25254,13 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj        index = 2; __pyx_t_9 = __pyx_t_7(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L8_unpacking_failed;        __Pyx_GOTREF(__pyx_t_9);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = NULL;        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        goto __pyx_L9_unpacking_done;        __pyx_L8_unpacking_failed:;        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_7 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L9_unpacking_done:;      } @@ -24556,7 +25280,7 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj      __pyx_cur_scope->__pyx_v__ = __pyx_t_9;      __pyx_t_9 = 0;      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_11)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_11)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __pyx_r = ((PyObject *)__pyx_t_4);      __pyx_t_4 = 0; @@ -24592,11 +25316,12 @@ static PyObject *__pyx_gb_3_sa_15decode_sentence_2generator10(__pyx_GeneratorObj    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":118 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118   *             for arc in node for node in lattice)   *    * def decode_sentence(lattice):             # <<<<<<<<<<<<<< @@ -24614,7 +25339,7 @@ static PyObject *__pyx_pf_3_sa_10decode_sentence(CYTHON_UNUSED PyObject *__pyx_s    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("decode_sentence", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(__pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24624,7 +25349,7 @@ static PyObject *__pyx_pf_3_sa_10decode_sentence(CYTHON_UNUSED PyObject *__pyx_s    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_lattice);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_lattice); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":119 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":119   *    * def decode_sentence(lattice):   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)             # <<<<<<<<<<<<<< @@ -24667,14 +25392,13 @@ static PyObject *__pyx_pw_3_sa_13encode_words(PyObject *__pyx_self, PyObject *__    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("encode_words (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_12encode_words(__pyx_self, ((PyObject *)__pyx_v_words));    __Pyx_RefNannyFinishContext();    return __pyx_r;  }  static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":122 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122   *    * def encode_words(words):   *     return tuple(sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -24690,7 +25414,7 @@ static PyObject *__pyx_pf_3_sa_12encode_words_genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_12_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24727,6 +25451,9 @@ static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    char *__pyx_t_5; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -24750,10 +25477,18 @@ static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -24770,7 +25505,7 @@ static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_5 = PyBytes_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_word); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_r = __pyx_t_4; @@ -24802,11 +25537,12 @@ static PyObject *__pyx_gb_3_sa_12encode_words_2generator11(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":121 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)   *    * def encode_words(words):             # <<<<<<<<<<<<<< @@ -24824,7 +25560,7 @@ static PyObject *__pyx_pf_3_sa_12encode_words(CYTHON_UNUSED PyObject *__pyx_self    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("encode_words", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(__pyx_ptype_3_sa___pyx_scope_struct_11_encode_words, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24834,7 +25570,7 @@ static PyObject *__pyx_pf_3_sa_12encode_words(CYTHON_UNUSED PyObject *__pyx_self    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_words);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_words); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":122 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":122   *    * def encode_words(words):   *     return tuple(sym_fromstring(word, True) for word in words)             # <<<<<<<<<<<<<< @@ -24877,14 +25613,13 @@ static PyObject *__pyx_pw_3_sa_15decode_words(PyObject *__pyx_self, PyObject *__    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("decode_words (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_pf_3_sa_14decode_words(__pyx_self, ((PyObject *)__pyx_v_syms));    __Pyx_RefNannyFinishContext();    return __pyx_r;  }  static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":125 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125   *    * def decode_words(syms):   *     return tuple(sym_tostring(sym) for sym in syms)             # <<<<<<<<<<<<<< @@ -24898,7 +25633,7 @@ static PyObject *__pyx_pf_3_sa_12decode_words_genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_14_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -24935,6 +25670,9 @@ static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    int __pyx_t_5; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -24958,10 +25696,18 @@ static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -24979,7 +25725,7 @@ static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject      __pyx_cur_scope->__pyx_v_sym = __pyx_t_4;      __pyx_t_4 = 0;      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_sym); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __pyx_r = ((PyObject *)__pyx_t_4);      __pyx_t_4 = 0; @@ -25010,11 +25756,12 @@ static PyObject *__pyx_gb_3_sa_12decode_words_2generator12(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":124 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124   *     return tuple(sym_fromstring(word, True) for word in words)   *    * def decode_words(syms):             # <<<<<<<<<<<<<< @@ -25031,7 +25778,7 @@ static PyObject *__pyx_pf_3_sa_14decode_words(CYTHON_UNUSED PyObject *__pyx_self    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("decode_words", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(__pyx_ptype_3_sa___pyx_scope_struct_13_decode_words, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -25041,7 +25788,7 @@ static PyObject *__pyx_pf_3_sa_14decode_words(CYTHON_UNUSED PyObject *__pyx_self    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_syms);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_syms); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":125 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":125   *    * def decode_words(syms):   *     return tuple(sym_tostring(sym) for sym in syms)             # <<<<<<<<<<<<<< @@ -25079,11 +25826,14 @@ static PyObject *__pyx_pf_3_sa_14decode_words(CYTHON_UNUSED PyObject *__pyx_self  static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/  static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_words = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__words,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__words,0};      PyObject* values[1] = {0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -25096,8 +25846,7 @@ static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__words); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__words)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;        }        if (unlikely(kw_args > 0)) { @@ -25123,7 +25872,7 @@ static int __pyx_pw_3_sa_6Phrase_1__cinit__(PyObject *__pyx_v_self, PyObject *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":6 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":6   * cdef class Phrase:   *    *     def __cinit__(self, words):             # <<<<<<<<<<<<<< @@ -25142,12 +25891,13 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v    int __pyx_t_2;    PyObject *__pyx_t_3 = NULL;    int __pyx_t_4; +  int __pyx_t_5;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":8 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":8   *     def __cinit__(self, words):   *         cdef int i, j, n, n_vars   *         n_vars = 0             # <<<<<<<<<<<<<< @@ -25156,7 +25906,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_n_vars = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":9 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":9   *         cdef int i, j, n, n_vars   *         n_vars = 0   *         n = len(words)             # <<<<<<<<<<<<<< @@ -25166,7 +25916,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v    __pyx_t_1 = PyObject_Length(__pyx_v_words); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_n = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":10 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":10   *         n_vars = 0   *         n = len(words)   *         self.syms = <int *>malloc(n*sizeof(int))             # <<<<<<<<<<<<<< @@ -25175,7 +25925,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_self->syms = ((int *)malloc((__pyx_v_n * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":11 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":11   *         n = len(words)   *         self.syms = <int *>malloc(n*sizeof(int))   *         for i from 0 <= i < n:             # <<<<<<<<<<<<<< @@ -25185,30 +25935,30 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v    __pyx_t_2 = __pyx_v_n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":12 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":12   *         self.syms = <int *>malloc(n*sizeof(int))   *         for i from 0 <= i < n:   *             self.syms[i] = words[i]             # <<<<<<<<<<<<<<   *             if sym_isvar(self.syms[i]):   *                 n_vars += 1   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_words, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_words, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 12; __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[7]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      (__pyx_v_self->syms[__pyx_v_i]) = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":13 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":13   *         for i from 0 <= i < n:   *             self.syms[i] = words[i]   *             if sym_isvar(self.syms[i]):             # <<<<<<<<<<<<<<   *                 n_vars += 1   *         self.n = n   */ -    __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])); -    if (__pyx_t_4) { +    __pyx_t_5 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0); +    if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":14 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":14   *             self.syms[i] = words[i]   *             if sym_isvar(self.syms[i]):   *                 n_vars += 1             # <<<<<<<<<<<<<< @@ -25221,7 +25971,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":15   *             if sym_isvar(self.syms[i]):   *                 n_vars += 1   *         self.n = n             # <<<<<<<<<<<<<< @@ -25230,7 +25980,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_self->n = __pyx_v_n; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":16 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":16   *                 n_vars += 1   *         self.n = n   *         self.n_vars = n_vars             # <<<<<<<<<<<<<< @@ -25239,7 +25989,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_self->n_vars = __pyx_v_n_vars; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":17   *         self.n = n   *         self.n_vars = n_vars   *         self.varpos = <int *>malloc(n_vars*sizeof(int))             # <<<<<<<<<<<<<< @@ -25248,7 +25998,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_self->varpos = ((int *)malloc((__pyx_v_n_vars * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":18   *         self.n_vars = n_vars   *         self.varpos = <int *>malloc(n_vars*sizeof(int))   *         j = 0             # <<<<<<<<<<<<<< @@ -25257,7 +26007,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_v_j = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":19 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":19   *         self.varpos = <int *>malloc(n_vars*sizeof(int))   *         j = 0   *         for i from 0 <= i < n:             # <<<<<<<<<<<<<< @@ -25267,17 +26017,17 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v    __pyx_t_2 = __pyx_v_n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":20 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":20   *         j = 0   *         for i from 0 <= i < n:   *             if sym_isvar(self.syms[i]):             # <<<<<<<<<<<<<<   *                 self.varpos[j] = i   *                 j = j + 1   */ -    __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])); -    if (__pyx_t_4) { +    __pyx_t_5 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0); +    if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":21 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":21   *         for i from 0 <= i < n:   *             if sym_isvar(self.syms[i]):   *                 self.varpos[j] = i             # <<<<<<<<<<<<<< @@ -25286,7 +26036,7 @@ static int __pyx_pf_3_sa_6Phrase___cinit__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */        (__pyx_v_self->varpos[__pyx_v_j]) = __pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":22 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":22   *             if sym_isvar(self.syms[i]):   *                 self.varpos[j] = i   *                 j = j + 1             # <<<<<<<<<<<<<< @@ -25319,7 +26069,7 @@ static void __pyx_pw_3_sa_6Phrase_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":24 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":24   *                 j = j + 1   *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -25331,7 +26081,7 @@ static void __pyx_pf_3_sa_6Phrase_2__dealloc__(struct __pyx_obj_3_sa_Phrase *__p    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":25 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":25   *    *     def __dealloc__(self):   *         free(self.syms)             # <<<<<<<<<<<<<< @@ -25340,7 +26090,7 @@ static void __pyx_pf_3_sa_6Phrase_2__dealloc__(struct __pyx_obj_3_sa_Phrase *__p   */    free(__pyx_v_self->syms); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":26 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":26   *     def __dealloc__(self):   *         free(self.syms)   *         free(self.varpos)             # <<<<<<<<<<<<<< @@ -25363,7 +26113,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_5__str__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":28 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":28   *         free(self.varpos)   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -25387,7 +26137,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__str__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":29 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":29   *    *     def __str__(self):   *         strs = []             # <<<<<<<<<<<<<< @@ -25396,10 +26146,10 @@ static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_strs = __pyx_t_1; +  __pyx_v_strs = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":31   *         strs = []   *         cdef int i, s   *         for i from 0 <= i < self.n:             # <<<<<<<<<<<<<< @@ -25409,7 +26159,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__    __pyx_t_2 = __pyx_v_self->n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":32 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":32   *         cdef int i, s   *         for i from 0 <= i < self.n:   *             s = self.syms[i]             # <<<<<<<<<<<<<< @@ -25418,20 +26168,20 @@ static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__   */      __pyx_v_s = (__pyx_v_self->syms[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":33 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":33   *         for i from 0 <= i < self.n:   *             s = self.syms[i]   *             strs.append(sym_tostring(s))             # <<<<<<<<<<<<<<   *         return ' '.join(strs)   *    */ -    __pyx_t_1 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -    __pyx_t_3 = PyList_Append(__pyx_v_strs, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_strs, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":34   *             s = self.syms[i]   *             strs.append(sym_tostring(s))   *         return ' '.join(strs)             # <<<<<<<<<<<<<< @@ -25439,7 +26189,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_4__str__(struct __pyx_obj_3_sa_Phrase *__   *     def handle(self):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 34; __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[7]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -25481,7 +26231,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_7handle(PyObject *__pyx_v_self, CYTHON_UN    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":36 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":36   *         return ' '.join(strs)   *    *     def handle(self):             # <<<<<<<<<<<<<< @@ -25505,7 +26255,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("handle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":39 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":39   *         """return a hashable representation that normalizes the ordering   *         of the nonterminal indices"""   *         norm = []             # <<<<<<<<<<<<<< @@ -25514,10 +26264,10 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_norm = __pyx_t_1; +  __pyx_v_norm = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":41   *         norm = []   *         cdef int i, j, s   *         i = 1             # <<<<<<<<<<<<<< @@ -25526,7 +26276,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */    __pyx_v_i = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":42 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":42   *         cdef int i, j, s   *         i = 1   *         j = 0             # <<<<<<<<<<<<<< @@ -25535,7 +26285,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */    __pyx_v_j = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":43 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":43   *         i = 1   *         j = 0   *         for j from 0 <= j < self.n:             # <<<<<<<<<<<<<< @@ -25545,7 +26295,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p    __pyx_t_2 = __pyx_v_self->n;    for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":44 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":44   *         j = 0   *         for j from 0 <= j < self.n:   *             s = self.syms[j]             # <<<<<<<<<<<<<< @@ -25554,17 +26304,17 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */      __pyx_v_s = (__pyx_v_self->syms[__pyx_v_j]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":45 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":45   *         for j from 0 <= j < self.n:   *             s = self.syms[j]   *             if sym_isvar(s):             # <<<<<<<<<<<<<<   *                 s = sym_setindex(s,i)   *                 i = i + 1   */ -    __pyx_t_3 = __pyx_f_3_sa_sym_isvar(__pyx_v_s); +    __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_v_s) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":46 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":46   *             s = self.syms[j]   *             if sym_isvar(s):   *                 s = sym_setindex(s,i)             # <<<<<<<<<<<<<< @@ -25573,7 +26323,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */        __pyx_v_s = __pyx_f_3_sa_sym_setindex(__pyx_v_s, __pyx_v_i); -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":47 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":47   *             if sym_isvar(s):   *                 s = sym_setindex(s,i)   *                 i = i + 1             # <<<<<<<<<<<<<< @@ -25585,7 +26335,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":48 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":48   *                 s = sym_setindex(s,i)   *                 i = i + 1   *             norm.append(s)             # <<<<<<<<<<<<<< @@ -25594,11 +26344,11 @@ static PyObject *__pyx_pf_3_sa_6Phrase_6handle(struct __pyx_obj_3_sa_Phrase *__p   */      __pyx_t_1 = PyInt_FromLong(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_4 = PyList_Append(__pyx_v_norm, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_norm, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":49 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":49   *                 i = i + 1   *             norm.append(s)   *         return tuple(norm)             # <<<<<<<<<<<<<< @@ -25636,7 +26386,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_9strhandle(PyObject *__pyx_v_self, CYTHON    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":51 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":51   *         return tuple(norm)   *    *     def strhandle(self):             # <<<<<<<<<<<<<< @@ -25663,7 +26413,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("strhandle", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":52 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":52   *    *     def strhandle(self):   *         strs = []             # <<<<<<<<<<<<<< @@ -25672,10 +26422,10 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_strs = __pyx_t_1; +  __pyx_v_strs = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":53 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":53   *     def strhandle(self):   *         strs = []   *         norm = []             # <<<<<<<<<<<<<< @@ -25684,10 +26434,10 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_norm = __pyx_t_1; +  __pyx_v_norm = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":55 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":55   *         norm = []   *         cdef int i, j, s   *         i = 1             # <<<<<<<<<<<<<< @@ -25696,7 +26446,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */    __pyx_v_i = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":56 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":56   *         cdef int i, j, s   *         i = 1   *         j = 0             # <<<<<<<<<<<<<< @@ -25705,7 +26455,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */    __pyx_v_j = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":57   *         i = 1   *         j = 0   *         for j from 0 <= j < self.n:             # <<<<<<<<<<<<<< @@ -25715,7 +26465,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *    __pyx_t_2 = __pyx_v_self->n;    for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":58 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":58   *         j = 0   *         for j from 0 <= j < self.n:   *             s = self.syms[j]             # <<<<<<<<<<<<<< @@ -25724,17 +26474,17 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */      __pyx_v_s = (__pyx_v_self->syms[__pyx_v_j]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":59 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":59   *         for j from 0 <= j < self.n:   *             s = self.syms[j]   *             if sym_isvar(s):             # <<<<<<<<<<<<<<   *                 s = sym_setindex(s,i)   *                 i = i + 1   */ -    __pyx_t_3 = __pyx_f_3_sa_sym_isvar(__pyx_v_s); +    __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_v_s) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":60 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":60   *             s = self.syms[j]   *             if sym_isvar(s):   *                 s = sym_setindex(s,i)             # <<<<<<<<<<<<<< @@ -25743,7 +26493,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   */        __pyx_v_s = __pyx_f_3_sa_sym_setindex(__pyx_v_s, __pyx_v_i); -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":61 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":61   *             if sym_isvar(s):   *                 s = sym_setindex(s,i)   *                 i = i + 1             # <<<<<<<<<<<<<< @@ -25755,20 +26505,20 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":62 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":62   *                 s = sym_setindex(s,i)   *                 i = i + 1   *             norm.append(sym_tostring(s))             # <<<<<<<<<<<<<<   *         return ' '.join(norm)   *    */ -    __pyx_t_1 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_v_s)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -    __pyx_t_4 = PyList_Append(__pyx_v_norm, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_norm, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":63 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":63   *                 i = i + 1   *             norm.append(sym_tostring(s))   *         return ' '.join(norm)             # <<<<<<<<<<<<<< @@ -25776,7 +26526,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_8strhandle(struct __pyx_obj_3_sa_Phrase *   *     def arity(self):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __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[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_5); @@ -25818,7 +26568,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_11arity(PyObject *__pyx_v_self, CYTHON_UN    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":65 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":65   *         return ' '.join(norm)   *    *     def arity(self):             # <<<<<<<<<<<<<< @@ -25835,7 +26585,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_10arity(struct __pyx_obj_3_sa_Phrase *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("arity", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":66   *    *     def arity(self):   *         return self.n_vars             # <<<<<<<<<<<<<< @@ -25872,7 +26622,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_13getvarpos(PyObject *__pyx_v_self, PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":68 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":68   *         return self.n_vars   *    *     def getvarpos(self, i):             # <<<<<<<<<<<<<< @@ -25892,28 +26642,26 @@ static PyObject *__pyx_pf_3_sa_6Phrase_12getvarpos(struct __pyx_obj_3_sa_Phrase    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("getvarpos", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":69 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":69   *    *     def getvarpos(self, i):   *         if 0 <= i < self.n_vars:             # <<<<<<<<<<<<<<   *             return self.varpos[i]   *         else:   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {      __Pyx_DECREF(__pyx_t_1);      __pyx_t_2 = PyInt_FromLong(__pyx_v_self->n_vars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __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[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":70 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":70   *     def getvarpos(self, i):   *         if 0 <= i < self.n_vars:   *             return self.varpos[i]             # <<<<<<<<<<<<<< @@ -25931,7 +26679,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_12getvarpos(struct __pyx_obj_3_sa_Phrase    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":72 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":72   *             return self.varpos[i]   *         else:   *             raise IndexError             # <<<<<<<<<<<<<< @@ -25967,7 +26715,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_15getvar(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":74 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":74   *             raise IndexError   *    *     def getvar(self, i):             # <<<<<<<<<<<<<< @@ -25987,28 +26735,26 @@ static PyObject *__pyx_pf_3_sa_6Phrase_14getvar(struct __pyx_obj_3_sa_Phrase *__    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("getvar", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":75 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":75   *    *     def getvar(self, i):   *         if 0 <= i < self.n_vars:             # <<<<<<<<<<<<<<   *             return self.syms[self.varpos[i]]   *         else:   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_int_0, __pyx_v_i, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {      __Pyx_DECREF(__pyx_t_1);      __pyx_t_2 = PyInt_FromLong(__pyx_v_self->n_vars); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __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[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":76 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":76   *     def getvar(self, i):   *         if 0 <= i < self.n_vars:   *             return self.syms[self.varpos[i]]             # <<<<<<<<<<<<<< @@ -26026,7 +26772,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_14getvar(struct __pyx_obj_3_sa_Phrase *__    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":78 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":78   *             return self.syms[self.varpos[i]]   *         else:   *             raise IndexError             # <<<<<<<<<<<<<< @@ -26051,7 +26797,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_14getvar(struct __pyx_obj_3_sa_Phrase *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":80 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":80   *             raise IndexError   *    *     cdef int chunkpos(self, int k):             # <<<<<<<<<<<<<< @@ -26065,17 +26811,17 @@ int __pyx_f_3_sa_6Phrase_chunkpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in    int __pyx_t_1;    __Pyx_RefNannySetupContext("chunkpos", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":81 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":81   *    *     cdef int chunkpos(self, int k):   *         if k == 0:             # <<<<<<<<<<<<<<   *             return 0   *         else:   */ -  __pyx_t_1 = (__pyx_v_k == 0); +  __pyx_t_1 = ((__pyx_v_k == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":82 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":82   *     cdef int chunkpos(self, int k):   *         if k == 0:   *             return 0             # <<<<<<<<<<<<<< @@ -26088,7 +26834,7 @@ int __pyx_f_3_sa_6Phrase_chunkpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":84 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":84   *             return 0   *         else:   *             return self.varpos[k-1]+1             # <<<<<<<<<<<<<< @@ -26106,7 +26852,7 @@ int __pyx_f_3_sa_6Phrase_chunkpos(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":86 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":86   *             return self.varpos[k-1]+1   *    *     cdef int chunklen(self, int k):             # <<<<<<<<<<<<<< @@ -26120,17 +26866,17 @@ int __pyx_f_3_sa_6Phrase_chunklen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in    int __pyx_t_1;    __Pyx_RefNannySetupContext("chunklen", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":87 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":87   *    *     cdef int chunklen(self, int k):   *         if self.n_vars == 0:             # <<<<<<<<<<<<<<   *             return self.n   *         elif k == 0:   */ -  __pyx_t_1 = (__pyx_v_self->n_vars == 0); +  __pyx_t_1 = ((__pyx_v_self->n_vars == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":88 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":88   *     cdef int chunklen(self, int k):   *         if self.n_vars == 0:   *             return self.n             # <<<<<<<<<<<<<< @@ -26142,17 +26888,17 @@ int __pyx_f_3_sa_6Phrase_chunklen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":89 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":89   *         if self.n_vars == 0:   *             return self.n   *         elif k == 0:             # <<<<<<<<<<<<<<   *             return self.varpos[0]   *         elif k == self.n_vars:   */ -  __pyx_t_1 = (__pyx_v_k == 0); +  __pyx_t_1 = ((__pyx_v_k == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":90 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":90   *             return self.n   *         elif k == 0:   *             return self.varpos[0]             # <<<<<<<<<<<<<< @@ -26164,17 +26910,17 @@ int __pyx_f_3_sa_6Phrase_chunklen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":91 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":91   *         elif k == 0:   *             return self.varpos[0]   *         elif k == self.n_vars:             # <<<<<<<<<<<<<<   *             return self.n-self.varpos[k-1]-1   *         else:   */ -  __pyx_t_1 = (__pyx_v_k == __pyx_v_self->n_vars); +  __pyx_t_1 = ((__pyx_v_k == __pyx_v_self->n_vars) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":92 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":92   *             return self.varpos[0]   *         elif k == self.n_vars:   *             return self.n-self.varpos[k-1]-1             # <<<<<<<<<<<<<< @@ -26187,7 +26933,7 @@ int __pyx_f_3_sa_6Phrase_chunklen(struct __pyx_obj_3_sa_Phrase *__pyx_v_self, in    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":94 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":94   *             return self.n-self.varpos[k-1]-1   *         else:   *             return self.varpos[k]-self.varpos[k-1]-1             # <<<<<<<<<<<<<< @@ -26216,7 +26962,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_17clen(PyObject *__pyx_v_self, PyObject *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":96 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":96   *             return self.varpos[k]-self.varpos[k-1]-1   *    *     def clen(self, k):             # <<<<<<<<<<<<<< @@ -26234,7 +26980,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_16clen(struct __pyx_obj_3_sa_Phrase *__py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("clen", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":97 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":97   *    *     def clen(self, k):   *          return self.chunklen(k)             # <<<<<<<<<<<<<< @@ -26272,7 +27018,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_19getchunk(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":99 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":99   *          return self.chunklen(k)   *    *     def getchunk(self, ci):             # <<<<<<<<<<<<<< @@ -26295,7 +27041,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("getchunk", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":101 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":101   *     def getchunk(self, ci):   *         cdef int start, stop   *         start = self.chunkpos(ci)             # <<<<<<<<<<<<<< @@ -26305,7 +27051,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_ci); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_start = ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_v_self->__pyx_vtab)->chunkpos(__pyx_v_self, __pyx_t_1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":102 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":102   *         cdef int start, stop   *         start = self.chunkpos(ci)   *         stop = start+self.chunklen(ci)             # <<<<<<<<<<<<<< @@ -26315,7 +27061,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_ci); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_stop = (__pyx_v_start + ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_v_self->__pyx_vtab)->chunklen(__pyx_v_self, __pyx_t_1)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":103 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":103   *         start = self.chunkpos(ci)   *         stop = start+self.chunklen(ci)   *         chunk = []             # <<<<<<<<<<<<<< @@ -26324,10 +27070,10 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *   */    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_chunk = __pyx_t_2; +  __pyx_v_chunk = ((PyObject*)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":104 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":104   *         stop = start+self.chunklen(ci)   *         chunk = []   *         for i from start <= i < stop:             # <<<<<<<<<<<<<< @@ -26337,7 +27083,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *    __pyx_t_1 = __pyx_v_stop;    for (__pyx_v_i = __pyx_v_start; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":105 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":105   *         chunk = []   *         for i from start <= i < stop:   *             chunk.append(self.syms[i])             # <<<<<<<<<<<<<< @@ -26346,11 +27092,11 @@ static PyObject *__pyx_pf_3_sa_6Phrase_18getchunk(struct __pyx_obj_3_sa_Phrase *   */      __pyx_t_2 = PyInt_FromLong((__pyx_v_self->syms[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = PyList_Append(__pyx_v_chunk, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_chunk, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":106 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":106   *         for i from start <= i < stop:   *             chunk.append(self.syms[i])   *         return chunk             # <<<<<<<<<<<<<< @@ -26388,7 +27134,7 @@ static int __pyx_pw_3_sa_6Phrase_21__cmp__(PyObject *__pyx_v_self, PyObject *__p  }  #endif /*!(#if PY_MAJOR_VERSION < 3)*/ -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":108 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":108   *         return chunk   *    *     def __cmp__(self, other):             # <<<<<<<<<<<<<< @@ -26411,7 +27157,7 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cmp__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":111 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":111   *         cdef Phrase otherp   *         cdef int i   *         otherp = other             # <<<<<<<<<<<<<< @@ -26422,7 +27168,7 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v    __Pyx_INCREF(__pyx_v_other);    __pyx_v_otherp = ((struct __pyx_obj_3_sa_Phrase *)__pyx_v_other); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":112 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":112   *         cdef int i   *         otherp = other   *         for i from 0 <= i < min(self.n, otherp.n):             # <<<<<<<<<<<<<< @@ -26431,7 +27177,7 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v   */    __pyx_t_1 = __pyx_v_otherp->n;    __pyx_t_2 = __pyx_v_self->n; -  if ((__pyx_t_1 < __pyx_t_2)) { +  if (((__pyx_t_1 < __pyx_t_2) != 0)) {      __pyx_t_3 = __pyx_t_1;    } else {      __pyx_t_3 = __pyx_t_2; @@ -26439,17 +27185,17 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v    __pyx_t_1 = __pyx_t_3;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":113 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":113   *         otherp = other   *         for i from 0 <= i < min(self.n, otherp.n):   *             if self.syms[i] < otherp.syms[i]:             # <<<<<<<<<<<<<<   *                 return -1   *             elif self.syms[i] > otherp.syms[i]:   */ -    __pyx_t_4 = ((__pyx_v_self->syms[__pyx_v_i]) < (__pyx_v_otherp->syms[__pyx_v_i])); +    __pyx_t_4 = (((__pyx_v_self->syms[__pyx_v_i]) < (__pyx_v_otherp->syms[__pyx_v_i])) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":114 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":114   *         for i from 0 <= i < min(self.n, otherp.n):   *             if self.syms[i] < otherp.syms[i]:   *                 return -1             # <<<<<<<<<<<<<< @@ -26461,17 +27207,17 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v        goto __pyx_L5;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":115 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":115   *             if self.syms[i] < otherp.syms[i]:   *                 return -1   *             elif self.syms[i] > otherp.syms[i]:             # <<<<<<<<<<<<<<   *                 return 1   *         if self.n < otherp.n:   */ -    __pyx_t_4 = ((__pyx_v_self->syms[__pyx_v_i]) > (__pyx_v_otherp->syms[__pyx_v_i])); +    __pyx_t_4 = (((__pyx_v_self->syms[__pyx_v_i]) > (__pyx_v_otherp->syms[__pyx_v_i])) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":116 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":116   *                 return -1   *             elif self.syms[i] > otherp.syms[i]:   *                 return 1             # <<<<<<<<<<<<<< @@ -26485,17 +27231,17 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":117 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":117   *             elif self.syms[i] > otherp.syms[i]:   *                 return 1   *         if self.n < otherp.n:             # <<<<<<<<<<<<<<   *             return -1   *         elif self.n > otherp.n:   */ -  __pyx_t_4 = (__pyx_v_self->n < __pyx_v_otherp->n); +  __pyx_t_4 = ((__pyx_v_self->n < __pyx_v_otherp->n) != 0);    if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":118 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":118   *                 return 1   *         if self.n < otherp.n:   *             return -1             # <<<<<<<<<<<<<< @@ -26507,17 +27253,17 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v      goto __pyx_L6;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":119 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":119   *         if self.n < otherp.n:   *             return -1   *         elif self.n > otherp.n:             # <<<<<<<<<<<<<<   *             return 1   *         else:   */ -  __pyx_t_4 = (__pyx_v_self->n > __pyx_v_otherp->n); +  __pyx_t_4 = ((__pyx_v_self->n > __pyx_v_otherp->n) != 0);    if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":120 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":120   *             return -1   *         elif self.n > otherp.n:   *             return 1             # <<<<<<<<<<<<<< @@ -26530,7 +27276,7 @@ static int __pyx_pf_3_sa_6Phrase_20__cmp__(struct __pyx_obj_3_sa_Phrase *__pyx_v    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":122 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":122   *             return 1   *         else:   *             return 0             # <<<<<<<<<<<<<< @@ -26565,7 +27311,7 @@ static Py_hash_t __pyx_pw_3_sa_6Phrase_23__hash__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":124 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":124   *             return 0   *    *     def __hash__(self):             # <<<<<<<<<<<<<< @@ -26582,7 +27328,7 @@ static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *    int __pyx_t_2;    __Pyx_RefNannySetupContext("__hash__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":127 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":127   *         cdef int i   *         cdef unsigned h   *         h = 0             # <<<<<<<<<<<<<< @@ -26591,7 +27337,7 @@ static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *   */    __pyx_v_h = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":128 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":128   *         cdef unsigned h   *         h = 0   *         for i from 0 <= i < self.n:             # <<<<<<<<<<<<<< @@ -26601,17 +27347,17 @@ static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *    __pyx_t_1 = __pyx_v_self->n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":129 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":129   *         h = 0   *         for i from 0 <= i < self.n:   *             if self.syms[i] > 0:             # <<<<<<<<<<<<<<   *                 h = (h << 1) + self.syms[i]   *             else:   */ -    __pyx_t_2 = ((__pyx_v_self->syms[__pyx_v_i]) > 0); +    __pyx_t_2 = (((__pyx_v_self->syms[__pyx_v_i]) > 0) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":130 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":130   *         for i from 0 <= i < self.n:   *             if self.syms[i] > 0:   *                 h = (h << 1) + self.syms[i]             # <<<<<<<<<<<<<< @@ -26623,7 +27369,7 @@ static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":132 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":132   *                 h = (h << 1) + self.syms[i]   *             else:   *                 h = (h << 1) + -self.syms[i]             # <<<<<<<<<<<<<< @@ -26635,7 +27381,7 @@ static Py_hash_t __pyx_pf_3_sa_6Phrase_22__hash__(struct __pyx_obj_3_sa_Phrase *      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":133 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":133   *             else:   *                 h = (h << 1) + -self.syms[i]   *         return h             # <<<<<<<<<<<<<< @@ -26663,7 +27409,7 @@ static Py_ssize_t __pyx_pw_3_sa_6Phrase_25__len__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":135 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":135   *         return h   *    *     def __len__(self):             # <<<<<<<<<<<<<< @@ -26676,7 +27422,7 @@ static Py_ssize_t __pyx_pf_3_sa_6Phrase_24__len__(struct __pyx_obj_3_sa_Phrase *    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__len__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":136 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":136   *    *     def __len__(self):   *         return self.n             # <<<<<<<<<<<<<< @@ -26703,7 +27449,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_27__getitem__(PyObject *__pyx_v_self, PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":138 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":138   *         return self.n   *    *     def __getitem__(self, i):             # <<<<<<<<<<<<<< @@ -26721,7 +27467,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_26__getitem__(struct __pyx_obj_3_sa_Phras    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__getitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":139 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":139   *    *     def __getitem__(self, i):   *         return self.syms[i]             # <<<<<<<<<<<<<< @@ -26760,7 +27506,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_29__iter__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":141 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":141   *         return self.syms[i]   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -26776,7 +27522,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_28__iter__(struct __pyx_obj_3_sa_Phrase *    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__iter__", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)__pyx_ptype_3_sa___pyx_scope_struct_15___iter__->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_15___iter__, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(__pyx_ptype_3_sa___pyx_scope_struct_15___iter__, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -26810,6 +27556,9 @@ static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx    PyObject *__pyx_r = NULL;    int __pyx_t_1;    PyObject *__pyx_t_2 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -26822,7 +27571,7 @@ static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":143 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":143   *     def __iter__(self):   *         cdef int i   *         for i from 0 <= i < self.n:             # <<<<<<<<<<<<<< @@ -26832,7 +27581,7 @@ static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx    __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->n;    for (__pyx_cur_scope->__pyx_v_i = 0; __pyx_cur_scope->__pyx_v_i < __pyx_t_1; __pyx_cur_scope->__pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":144 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":144   *         cdef int i   *         for i from 0 <= i < self.n:   *             yield self.syms[i]             # <<<<<<<<<<<<<< @@ -26861,6 +27610,7 @@ static PyObject *__pyx_gb_3_sa_6Phrase_30generator2(__pyx_GeneratorObject *__pyx    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } @@ -26870,11 +27620,14 @@ static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject  static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_start = 0;    PyObject *__pyx_v_children = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__children,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("subst (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__children,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -26888,12 +27641,10 @@ static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__children); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__children)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("subst", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -26923,7 +27674,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_32subst(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":146 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":146   *             yield self.syms[i]   *    *     def subst(self, start, children):             # <<<<<<<<<<<<<< @@ -26946,7 +27697,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__p    __Pyx_RefNannySetupContext("subst", 0);    __Pyx_INCREF(__pyx_v_start); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":148 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":148   *     def subst(self, start, children):   *         cdef int i   *         for i from 0 <= i < self.n:             # <<<<<<<<<<<<<< @@ -26956,17 +27707,17 @@ static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__p    __pyx_t_1 = __pyx_v_self->n;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":149 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":149   *         cdef int i   *         for i from 0 <= i < self.n:   *             if sym_isvar(self.syms[i]):             # <<<<<<<<<<<<<<   *                 start = start + children[sym_getindex(self.syms[i])-1]   *             else:   */ -    __pyx_t_2 = __pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])); +    __pyx_t_2 = (__pyx_f_3_sa_sym_isvar((__pyx_v_self->syms[__pyx_v_i])) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":150 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":150   *         for i from 0 <= i < self.n:   *             if sym_isvar(self.syms[i]):   *                 start = start + children[sym_getindex(self.syms[i])-1]             # <<<<<<<<<<<<<< @@ -26974,7 +27725,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__p   *                 start = start + (self.syms[i],)   */        __pyx_t_3 = (__pyx_f_3_sa_sym_getindex((__pyx_v_self->syms[__pyx_v_i])) - 1); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_children, __pyx_t_3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_children, __pyx_t_3, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4);        __pyx_t_5 = PyNumber_Add(__pyx_v_start, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); @@ -26986,7 +27737,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__p      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":152 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":152   *                 start = start + children[sym_getindex(self.syms[i])-1]   *             else:   *                 start = start + (self.syms[i],)             # <<<<<<<<<<<<<< @@ -27010,7 +27761,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_31subst(struct __pyx_obj_3_sa_Phrase *__p      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":153 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":153   *             else:   *                 start = start + (self.syms[i],)   *         return start             # <<<<<<<<<<<<<< @@ -27047,7 +27798,7 @@ static PyObject *__pyx_pw_3_sa_6Phrase_5words_1__get__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":156 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":156   *    *     property words:   *         def __get__(self):             # <<<<<<<<<<<<<< @@ -27071,7 +27822,7 @@ static PyObject *__pyx_pf_3_sa_6Phrase_5words___get__(struct __pyx_obj_3_sa_Phra    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__get__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":157 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":157   *     property words:   *         def __get__(self):   *             return [sym_tostring(w) for w in self if not sym_isvar(w)]             # <<<<<<<<<<<<<< @@ -27092,10 +27843,18 @@ static PyObject *__pyx_pf_3_sa_6Phrase_5words___get__(struct __pyx_obj_3_sa_Phra    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_5 = __pyx_t_4(__pyx_t_2);        if (unlikely(!__pyx_t_5)) { @@ -27111,21 +27870,20 @@ static PyObject *__pyx_pf_3_sa_6Phrase_5words___get__(struct __pyx_obj_3_sa_Phra      __pyx_v_w = __pyx_t_5;      __pyx_t_5 = 0;      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_7 = (!__pyx_f_3_sa_sym_isvar(__pyx_t_6)); +    __pyx_t_7 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_6) != 0)) != 0);      if (__pyx_t_7) {        __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_5 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_5)); -      if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;        goto __pyx_L5;      }      __pyx_L5:;    }    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_1));    __pyx_r = ((PyObject *)__pyx_t_1); -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_t_1 = 0;    goto __pyx_L0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -27151,14 +27909,17 @@ static int __pyx_pw_3_sa_4Rule_1__cinit__(PyObject *__pyx_v_self, PyObject *__py    struct __pyx_obj_3_sa_Phrase *__pyx_v_e = 0;    PyObject *__pyx_v_scores = 0;    PyObject *__pyx_v_word_alignments = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lhs,&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__scores,&__pyx_n_s__word_alignments,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lhs,&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__scores,&__pyx_n_s__word_alignments,0};      PyObject* values[5] = {0,0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":161 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":161   * cdef class Rule:   *    *     def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):             # <<<<<<<<<<<<<< @@ -27182,18 +27943,15 @@ static int __pyx_pw_3_sa_4Rule_1__cinit__(PyObject *__pyx_v_self, PyObject *__py        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lhs); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lhs)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -27258,18 +28016,18 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":162 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":162   *    *     def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):   *         if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)             # <<<<<<<<<<<<<<   *         self.lhs = lhs   *         self.f = f   */ -  __pyx_t_1 = (!__pyx_f_3_sa_sym_isvar(__pyx_v_lhs)); +  __pyx_t_1 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_v_lhs) != 0)) != 0);    if (__pyx_t_1) {      __pyx_t_2 = PyInt_FromLong(__pyx_v_lhs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_68), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_70), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__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[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -27287,7 +28045,7 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":163 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":163   *     def __cinit__(self, int lhs, Phrase f, Phrase e, scores=None, word_alignments=None):   *         if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)   *         self.lhs = lhs             # <<<<<<<<<<<<<< @@ -27296,7 +28054,7 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel   */    __pyx_v_self->lhs = __pyx_v_lhs; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":164 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":164   *         if not sym_isvar(lhs): raise Exception('Invalid LHS symbol: %d' % lhs)   *         self.lhs = lhs   *         self.f = f             # <<<<<<<<<<<<<< @@ -27309,7 +28067,7 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel    __Pyx_DECREF(((PyObject *)__pyx_v_self->f));    __pyx_v_self->f = __pyx_v_f; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":165 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":165   *         self.lhs = lhs   *         self.f = f   *         self.e = e             # <<<<<<<<<<<<<< @@ -27322,7 +28080,7 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel    __Pyx_DECREF(((PyObject *)__pyx_v_self->e));    __pyx_v_self->e = __pyx_v_e; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":166 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":166   *         self.f = f   *         self.e = e   *         self.word_alignments = word_alignments             # <<<<<<<<<<<<<< @@ -27335,7 +28093,7 @@ static int __pyx_pf_3_sa_4Rule___cinit__(struct __pyx_obj_3_sa_Rule *__pyx_v_sel    __Pyx_DECREF(__pyx_v_self->word_alignments);    __pyx_v_self->word_alignments = __pyx_v_word_alignments; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":167 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":167   *         self.e = e   *         self.word_alignments = word_alignments   *         self.scores = scores             # <<<<<<<<<<<<<< @@ -27372,7 +28130,7 @@ static Py_hash_t __pyx_pw_3_sa_4Rule_3__hash__(PyObject *__pyx_v_self) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":169 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":169   *         self.scores = scores   *    *     def __hash__(self):             # <<<<<<<<<<<<<< @@ -27391,7 +28149,7 @@ static Py_hash_t __pyx_pf_3_sa_4Rule_2__hash__(struct __pyx_obj_3_sa_Rule *__pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__hash__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":170 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":170   *    *     def __hash__(self):   *         return hash((self.lhs, self.f, self.e))             # <<<<<<<<<<<<<< @@ -27433,6 +28191,9 @@ static Py_hash_t __pyx_pf_3_sa_4Rule_2__hash__(struct __pyx_obj_3_sa_Rule *__pyx  #if PY_MAJOR_VERSION < 3  static int __pyx_pw_3_sa_4Rule_5__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/  static int __pyx_pw_3_sa_4Rule_5__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { +  CYTHON_UNUSED int __pyx_lineno = 0; +  CYTHON_UNUSED const char *__pyx_filename = NULL; +  CYTHON_UNUSED int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cmp__ (wrapper)", 0); @@ -27447,7 +28208,7 @@ static int __pyx_pw_3_sa_4Rule_5__cmp__(PyObject *__pyx_v_self, PyObject *__pyx_  }  #endif /*!(#if PY_MAJOR_VERSION < 3)*/ -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":172 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":172   *         return hash((self.lhs, self.f, self.e))   *    *     def __cmp__(self, Rule other):             # <<<<<<<<<<<<<< @@ -27468,7 +28229,7 @@ static int __pyx_pf_3_sa_4Rule_4__cmp__(struct __pyx_obj_3_sa_Rule *__pyx_v_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cmp__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":173 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":173   *    *     def __cmp__(self, Rule other):   *         return cmp((self.lhs, self.f, self.e, self.word_alignments),             # <<<<<<<<<<<<<< @@ -27492,7 +28253,7 @@ static int __pyx_pf_3_sa_4Rule_4__cmp__(struct __pyx_obj_3_sa_Rule *__pyx_v_self    __Pyx_GIVEREF(__pyx_v_self->word_alignments);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":174 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":174   *     def __cmp__(self, Rule other):   *         return cmp((self.lhs, self.f, self.e, self.word_alignments),   *                 (other.lhs, other.f, other.e, self.word_alignments))             # <<<<<<<<<<<<<< @@ -27548,6 +28309,9 @@ static int __pyx_pf_3_sa_4Rule_4__cmp__(struct __pyx_obj_3_sa_Rule *__pyx_v_self  /* Python wrapper */  static PyObject *__pyx_pw_3_sa_4Rule_7fmerge(PyObject *__pyx_v_self, PyObject *__pyx_v_f); /*proto*/  static PyObject *__pyx_pw_3_sa_4Rule_7fmerge(PyObject *__pyx_v_self, PyObject *__pyx_v_f) { +  CYTHON_UNUSED int __pyx_lineno = 0; +  CYTHON_UNUSED const char *__pyx_filename = NULL; +  CYTHON_UNUSED int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("fmerge (wrapper)", 0); @@ -27561,7 +28325,7 @@ static PyObject *__pyx_pw_3_sa_4Rule_7fmerge(PyObject *__pyx_v_self, PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":176 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":176   *                 (other.lhs, other.f, other.e, self.word_alignments))   *    *     def fmerge(self, Phrase f):             # <<<<<<<<<<<<<< @@ -27579,20 +28343,19 @@ static PyObject *__pyx_pf_3_sa_4Rule_6fmerge(struct __pyx_obj_3_sa_Rule *__pyx_v    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("fmerge", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":177 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":177   *    *     def fmerge(self, Phrase f):   *         if self.f == f:             # <<<<<<<<<<<<<<   *             self.f = f   *    */ -  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_self->f), ((PyObject *)__pyx_v_f), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_self->f), ((PyObject *)__pyx_v_f), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":178 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":178   *     def fmerge(self, Phrase f):   *         if self.f == f:   *             self.f = f             # <<<<<<<<<<<<<< @@ -27631,7 +28394,7 @@ static PyObject *__pyx_pw_3_sa_4Rule_9arity(PyObject *__pyx_v_self, CYTHON_UNUSE    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":180 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":180   *             self.f = f   *    *     def arity(self):             # <<<<<<<<<<<<<< @@ -27649,7 +28412,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_8arity(struct __pyx_obj_3_sa_Rule *__pyx_v_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("arity", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":181 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":181   *    *     def arity(self):   *         return self.f.arity()             # <<<<<<<<<<<<<< @@ -27657,7 +28420,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_8arity(struct __pyx_obj_3_sa_Rule *__pyx_v_   *     def __str__(self):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->f), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->f), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 181; __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[7]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -27691,7 +28454,7 @@ static PyObject *__pyx_pw_3_sa_4Rule_11__str__(PyObject *__pyx_v_self) {  }  static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":187 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187   *         fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]   *         if self.word_alignments is not None:   *             fields.append(' '.join('%d-%d' % a for a in self.alignments()))             # <<<<<<<<<<<<<< @@ -27707,7 +28470,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_7__str___genexpr(PyObject *__pyx_self) {    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_17_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -27743,6 +28506,9 @@ static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject    PyObject *__pyx_t_2 = NULL;    Py_ssize_t __pyx_t_3;    PyObject *(*__pyx_t_4)(PyObject *); +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -27755,7 +28521,7 @@ static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self), __pyx_n_s__alignments); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self), __pyx_n_s__alignments); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __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[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -27772,10 +28538,18 @@ static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_2 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_2)) { @@ -27792,7 +28566,7 @@ static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject      __Pyx_GIVEREF(__pyx_t_2);      __pyx_cur_scope->__pyx_v_a = __pyx_t_2;      __pyx_t_2 = 0; -    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_69), __pyx_cur_scope->__pyx_v_a); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_71), __pyx_cur_scope->__pyx_v_a); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2));      __pyx_r = ((PyObject *)__pyx_t_2);      __pyx_t_2 = 0; @@ -27823,11 +28597,12 @@ static PyObject *__pyx_gb_3_sa_4Rule_7__str___2generator13(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":183 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":183   *         return self.f.arity()   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -27847,11 +28622,12 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx    PyObject *__pyx_t_5 = NULL;    int __pyx_t_6;    int __pyx_t_7; +  int __pyx_t_8;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__str__", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)__pyx_ptype_3_sa___pyx_scope_struct_16___str__->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_16___str__, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(__pyx_ptype_3_sa___pyx_scope_struct_16___str__, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -27861,14 +28637,14 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx    __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);    __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":185   *     def __str__(self):   *         cdef unsigned i   *         fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]             # <<<<<<<<<<<<<<   *         if self.word_alignments is not None:   *             fields.append(' '.join('%d-%d' % a for a in self.alignments()))   */ -  __pyx_t_1 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_cur_scope->__pyx_v_self->lhs)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_cur_scope->__pyx_v_self->lhs)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1));    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -27908,10 +28684,10 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx    __pyx_t_3 = 0;    __pyx_t_4 = 0;    __pyx_t_5 = 0; -  __pyx_v_fields = __pyx_t_2; +  __pyx_v_fields = ((PyObject*)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":186 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":186   *         cdef unsigned i   *         fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]   *         if self.word_alignments is not None:             # <<<<<<<<<<<<<< @@ -27919,16 +28695,17 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx   *         return ' ||| '.join(fields)   */    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_self->word_alignments != Py_None); -  if (__pyx_t_6) { +  __pyx_t_7 = (__pyx_t_6 != 0); +  if (__pyx_t_7) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":187 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":187   *         fields = [sym_tostring(self.lhs), str(self.f), str(self.e), str(self.scores)]   *         if self.word_alignments is not None:   *             fields.append(' '.join('%d-%d' % a for a in self.alignments()))             # <<<<<<<<<<<<<<   *         return ' ||| '.join(fields)   *    */ -    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_5 = __pyx_pf_3_sa_4Rule_7__str___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); @@ -27941,13 +28718,13 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -    __pyx_t_7 = PyList_Append(__pyx_v_fields, __pyx_t_5); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_fields, __pyx_t_5); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      goto __pyx_L3;    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":188 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":188   *         if self.word_alignments is not None:   *             fields.append(' '.join('%d-%d' % a for a in self.alignments()))   *         return ' ||| '.join(fields)             # <<<<<<<<<<<<<< @@ -27955,7 +28732,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_10__str__(struct __pyx_obj_3_sa_Rule *__pyx   *     def alignments(self):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_18), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_19), __pyx_n_s__join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __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[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -28000,12 +28777,12 @@ static PyObject *__pyx_pw_3_sa_4Rule_13alignments(PyObject *__pyx_v_self, CYTHON    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":190 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":190   *         return ' ||| '.join(fields)   *    *     def alignments(self):             # <<<<<<<<<<<<<<   *         for point in self.word_alignments: - *             yield point/65536, point%65536 + *             yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE   */  static PyObject *__pyx_pf_3_sa_4Rule_12alignments(struct __pyx_obj_3_sa_Rule *__pyx_v_self) { @@ -28016,7 +28793,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_12alignments(struct __pyx_obj_3_sa_Rule *__    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("alignments", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)__pyx_ptype_3_sa___pyx_scope_struct_18_alignments->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_18_alignments, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(__pyx_ptype_3_sa___pyx_scope_struct_18_alignments, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -28054,6 +28831,9 @@ static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_g    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL;    PyObject *__pyx_t_6 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -28066,11 +28846,11 @@ static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_g    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":191 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":191   *    *     def alignments(self):   *         for point in self.word_alignments:             # <<<<<<<<<<<<<< - *             yield point/65536, point%65536 + *             yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE   */    if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_self->word_alignments) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_self->word_alignments)) {      __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->word_alignments; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -28083,10 +28863,18 @@ static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_g    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -28104,25 +28892,31 @@ static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_g      __pyx_cur_scope->__pyx_v_point = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rule.pxi":192 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rule.pxi":192   *     def alignments(self):   *         for point in self.word_alignments: - *             yield point/65536, point%65536             # <<<<<<<<<<<<<< + *             yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE             # <<<<<<<<<<<<<<   */ -    __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_cur_scope->__pyx_v_point, __pyx_int_65536); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyNumber_Remainder(__pyx_cur_scope->__pyx_v_point, __pyx_int_65536); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_cur_scope->__pyx_v_point, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __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[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyInt_FromLong(__pyx_v_3_sa_ALIGNMENT_CODE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_6 = PyNumber_Remainder(__pyx_cur_scope->__pyx_v_point, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __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_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 192; __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_4 = 0; +    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); +    __Pyx_GIVEREF(__pyx_t_6);      __pyx_t_5 = 0; -    __pyx_r = ((PyObject *)__pyx_t_6);      __pyx_t_6 = 0; +    __pyx_r = ((PyObject *)__pyx_t_4); +    __pyx_t_4 = 0;      __Pyx_XGIVEREF(__pyx_t_1);      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;      __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; @@ -28152,6 +28946,7 @@ static PyObject *__pyx_gb_3_sa_4Rule_14generator3(__pyx_GeneratorObject *__pyx_g    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } @@ -28218,7 +29013,7 @@ static PyObject *__pyx_pf_3_sa_4Rule_1e___get__(struct __pyx_obj_3_sa_Rule *__py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":21 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":21   *     int arr_len   *    * cdef _Trie_Node* new_trie_node():             # <<<<<<<<<<<<<< @@ -28232,7 +29027,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("new_trie_node", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":23 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":23   * cdef _Trie_Node* new_trie_node():   *     cdef _Trie_Node* node   *     node = <_Trie_Node*> malloc(sizeof(_Trie_Node))             # <<<<<<<<<<<<<< @@ -28241,7 +29036,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {   */    __pyx_v_node = ((struct __pyx_t_3_sa__Trie_Node *)malloc((sizeof(struct __pyx_t_3_sa__Trie_Node)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":24 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":24   *     cdef _Trie_Node* node   *     node = <_Trie_Node*> malloc(sizeof(_Trie_Node))   *     node.root = NULL             # <<<<<<<<<<<<<< @@ -28250,7 +29045,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {   */    __pyx_v_node->root = NULL; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":25 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":25   *     node = <_Trie_Node*> malloc(sizeof(_Trie_Node))   *     node.root = NULL   *     node.arr_len = 0             # <<<<<<<<<<<<<< @@ -28259,7 +29054,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {   */    __pyx_v_node->arr_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":26 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":26   *     node.root = NULL   *     node.arr_len = 0   *     node.arr = <int*> malloc(sizeof(0*sizeof(int)))             # <<<<<<<<<<<<<< @@ -28268,7 +29063,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {   */    __pyx_v_node->arr = ((int *)malloc((sizeof((0 * (sizeof(int))))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":27 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":27   *     node.arr_len = 0   *     node.arr = <int*> malloc(sizeof(0*sizeof(int)))   *     return node             # <<<<<<<<<<<<<< @@ -28284,7 +29079,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_new_trie_node(void) {    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":29 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":29   *     return node   *    * cdef _Trie_Edge* new_trie_edge(int val):             # <<<<<<<<<<<<<< @@ -28298,7 +29093,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("new_trie_edge", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":31   * cdef _Trie_Edge* new_trie_edge(int val):   *     cdef _Trie_Edge* edge   *     edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))             # <<<<<<<<<<<<<< @@ -28307,7 +29102,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va   */    __pyx_v_edge = ((struct __pyx_t_3_sa__Trie_Edge *)malloc((sizeof(struct __pyx_t_3_sa__Trie_Edge)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":32 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":32   *     cdef _Trie_Edge* edge   *     edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))   *     edge.node = new_trie_node()             # <<<<<<<<<<<<<< @@ -28316,7 +29111,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va   */    __pyx_v_edge->node = __pyx_f_3_sa_new_trie_node(); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":33   *     edge = <_Trie_Edge*> malloc(sizeof(_Trie_Edge))   *     edge.node = new_trie_node()   *     edge.bigger = NULL             # <<<<<<<<<<<<<< @@ -28325,7 +29120,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va   */    __pyx_v_edge->bigger = NULL; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":34   *     edge.node = new_trie_node()   *     edge.bigger = NULL   *     edge.smaller = NULL             # <<<<<<<<<<<<<< @@ -28334,7 +29129,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va   */    __pyx_v_edge->smaller = NULL; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":35 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":35   *     edge.bigger = NULL   *     edge.smaller = NULL   *     edge.val = val             # <<<<<<<<<<<<<< @@ -28343,7 +29138,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va   */    __pyx_v_edge->val = __pyx_v_val; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":36 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":36   *     edge.smaller = NULL   *     edge.val = val   *     return edge             # <<<<<<<<<<<<<< @@ -28359,7 +29154,7 @@ static struct __pyx_t_3_sa__Trie_Edge *__pyx_f_3_sa_new_trie_edge(int __pyx_v_va    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":38 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":38   *     return edge   *    * cdef free_trie_node(_Trie_Node* node):             # <<<<<<<<<<<<<< @@ -28377,17 +29172,17 @@ static PyObject *__pyx_f_3_sa_free_trie_node(struct __pyx_t_3_sa__Trie_Node *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("free_trie_node", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":39 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":39   *    * cdef free_trie_node(_Trie_Node* node):   *     if node != NULL:             # <<<<<<<<<<<<<<   *         free_trie_edge(node.root)   *         free(node.arr)   */ -  __pyx_t_1 = (__pyx_v_node != NULL); +  __pyx_t_1 = ((__pyx_v_node != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":40 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":40   * cdef free_trie_node(_Trie_Node* node):   *     if node != NULL:   *         free_trie_edge(node.root)             # <<<<<<<<<<<<<< @@ -28398,7 +29193,7 @@ static PyObject *__pyx_f_3_sa_free_trie_node(struct __pyx_t_3_sa__Trie_Node *__p      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":41 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":41   *     if node != NULL:   *         free_trie_edge(node.root)   *         free(node.arr)             # <<<<<<<<<<<<<< @@ -28422,7 +29217,7 @@ static PyObject *__pyx_f_3_sa_free_trie_node(struct __pyx_t_3_sa__Trie_Node *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":43 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":43   *         free(node.arr)   *    * cdef free_trie_edge(_Trie_Edge* edge):             # <<<<<<<<<<<<<< @@ -28440,17 +29235,17 @@ static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("free_trie_edge", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":44 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":44   *    * cdef free_trie_edge(_Trie_Edge* edge):   *     if edge != NULL:             # <<<<<<<<<<<<<<   *         free_trie_node(edge.node)   *         free_trie_edge(edge.bigger)   */ -  __pyx_t_1 = (__pyx_v_edge != NULL); +  __pyx_t_1 = ((__pyx_v_edge != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":45 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":45   * cdef free_trie_edge(_Trie_Edge* edge):   *     if edge != NULL:   *         free_trie_node(edge.node)             # <<<<<<<<<<<<<< @@ -28461,7 +29256,7 @@ static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *__p      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":46 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":46   *     if edge != NULL:   *         free_trie_node(edge.node)   *         free_trie_edge(edge.bigger)             # <<<<<<<<<<<<<< @@ -28472,7 +29267,7 @@ static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *__p      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":47 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":47   *         free_trie_node(edge.node)   *         free_trie_edge(edge.bigger)   *         free_trie_edge(edge.smaller)             # <<<<<<<<<<<<<< @@ -28498,7 +29293,7 @@ static PyObject *__pyx_f_3_sa_free_trie_edge(struct __pyx_t_3_sa__Trie_Edge *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":49 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":49   *         free_trie_edge(edge.smaller)   *    * cdef _Trie_Node* trie_find(_Trie_Node* node, int val):             # <<<<<<<<<<<<<< @@ -28510,21 +29305,23 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_s    struct __pyx_t_3_sa__Trie_Edge *__pyx_v_cur;    struct __pyx_t_3_sa__Trie_Node *__pyx_r;    __Pyx_RefNannyDeclarations -  int __pyx_t_1; +  struct __pyx_t_3_sa__Trie_Edge *__pyx_t_1;    int __pyx_t_2;    int __pyx_t_3; +  int __pyx_t_4;    __Pyx_RefNannySetupContext("trie_find", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":51 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":51   * cdef _Trie_Node* trie_find(_Trie_Node* node, int val):   *     cdef _Trie_Edge* cur   *     cur = node.root             # <<<<<<<<<<<<<<   *     while cur != NULL and cur.val != val:   *         if val > cur.val:   */ -  __pyx_v_cur = __pyx_v_node->root; +  __pyx_t_1 = __pyx_v_node->root; +  __pyx_v_cur = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":52 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":52   *     cdef _Trie_Edge* cur   *     cur = node.root   *     while cur != NULL and cur.val != val:             # <<<<<<<<<<<<<< @@ -28532,70 +29329,72 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_s   *             cur = cur.bigger   */    while (1) { -    __pyx_t_1 = (__pyx_v_cur != NULL); -    if (__pyx_t_1) { -      __pyx_t_2 = (__pyx_v_cur->val != __pyx_v_val); -      __pyx_t_3 = __pyx_t_2; +    __pyx_t_2 = ((__pyx_v_cur != NULL) != 0); +    if (__pyx_t_2) { +      __pyx_t_3 = ((__pyx_v_cur->val != __pyx_v_val) != 0); +      __pyx_t_4 = __pyx_t_3;      } else { -      __pyx_t_3 = __pyx_t_1; +      __pyx_t_4 = __pyx_t_2;      } -    if (!__pyx_t_3) break; +    if (!__pyx_t_4) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":53 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":53   *     cur = node.root   *     while cur != NULL and cur.val != val:   *         if val > cur.val:             # <<<<<<<<<<<<<<   *             cur = cur.bigger   *         elif val < cur.val:   */ -    __pyx_t_3 = (__pyx_v_val > __pyx_v_cur->val); -    if (__pyx_t_3) { +    __pyx_t_4 = ((__pyx_v_val > __pyx_v_cur->val) != 0); +    if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":54 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":54   *     while cur != NULL and cur.val != val:   *         if val > cur.val:   *             cur = cur.bigger             # <<<<<<<<<<<<<<   *         elif val < cur.val:   *             cur = cur.smaller   */ -      __pyx_v_cur = __pyx_v_cur->bigger; +      __pyx_t_1 = __pyx_v_cur->bigger; +      __pyx_v_cur = __pyx_t_1;        goto __pyx_L5;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":55 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":55   *         if val > cur.val:   *             cur = cur.bigger   *         elif val < cur.val:             # <<<<<<<<<<<<<<   *             cur = cur.smaller   *     if cur == NULL:   */ -    __pyx_t_3 = (__pyx_v_val < __pyx_v_cur->val); -    if (__pyx_t_3) { +    __pyx_t_4 = ((__pyx_v_val < __pyx_v_cur->val) != 0); +    if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":56 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":56   *             cur = cur.bigger   *         elif val < cur.val:   *             cur = cur.smaller             # <<<<<<<<<<<<<<   *     if cur == NULL:   *         return NULL   */ -      __pyx_v_cur = __pyx_v_cur->smaller; +      __pyx_t_1 = __pyx_v_cur->smaller; +      __pyx_v_cur = __pyx_t_1;        goto __pyx_L5;      }      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":57 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":57   *         elif val < cur.val:   *             cur = cur.smaller   *     if cur == NULL:             # <<<<<<<<<<<<<<   *         return NULL   *     else:   */ -  __pyx_t_3 = (__pyx_v_cur == NULL); -  if (__pyx_t_3) { +  __pyx_t_4 = ((__pyx_v_cur == NULL) != 0); +  if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":58 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":58   *             cur = cur.smaller   *     if cur == NULL:   *         return NULL             # <<<<<<<<<<<<<< @@ -28608,7 +29407,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_s    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":60 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":60   *         return NULL   *     else:   *         return cur.node             # <<<<<<<<<<<<<< @@ -28626,7 +29425,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_find(struct __pyx_t_3_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":62 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":62   *         return cur.node   *    * cdef trie_node_data_append(_Trie_Node* node, int val):             # <<<<<<<<<<<<<< @@ -28640,7 +29439,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_No    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("trie_node_data_append", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":64 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":64   * cdef trie_node_data_append(_Trie_Node* node, int val):   *     cdef int new_len   *     new_len = node.arr_len + 1             # <<<<<<<<<<<<<< @@ -28649,7 +29448,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_No   */    __pyx_v_new_len = (__pyx_v_node->arr_len + 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":65 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":65   *     cdef int new_len   *     new_len = node.arr_len + 1   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -28658,7 +29457,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_No   */    __pyx_v_node->arr = ((int *)realloc(__pyx_v_node->arr, (__pyx_v_new_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":66   *     new_len = node.arr_len + 1   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))   *     node.arr[node.arr_len] = val             # <<<<<<<<<<<<<< @@ -28667,7 +29466,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_No   */    (__pyx_v_node->arr[__pyx_v_node->arr_len]) = __pyx_v_val; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":67 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":67   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))   *     node.arr[node.arr_len] = val   *     node.arr_len = new_len             # <<<<<<<<<<<<<< @@ -28682,7 +29481,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_append(struct __pyx_t_3_sa__Trie_No    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":69 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":69   *     node.arr_len = new_len   *    * cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals):             # <<<<<<<<<<<<<< @@ -28696,7 +29495,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_No    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("trie_node_data_extend", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":71   * cdef trie_node_data_extend(_Trie_Node* node, int* vals, int num_vals):   *     cdef int new_len   *     new_len = node.arr_len + num_vals             # <<<<<<<<<<<<<< @@ -28705,7 +29504,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_No   */    __pyx_v_new_len = (__pyx_v_node->arr_len + __pyx_v_num_vals); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":72 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":72   *     cdef int new_len   *     new_len = node.arr_len + num_vals   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -28714,7 +29513,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_No   */    __pyx_v_node->arr = ((int *)realloc(__pyx_v_node->arr, (__pyx_v_new_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":73 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":73   *     new_len = node.arr_len + num_vals   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))   *     memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))             # <<<<<<<<<<<<<< @@ -28723,7 +29522,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_No   */    memcpy((__pyx_v_node->arr + __pyx_v_node->arr_len), __pyx_v_vals, (__pyx_v_num_vals * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":74 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":74   *     node.arr = <int*> realloc(node.arr, new_len*sizeof(int))   *     memcpy(node.arr + node.arr_len, vals, num_vals*sizeof(int))   *     node.arr_len = new_len             # <<<<<<<<<<<<<< @@ -28738,7 +29537,7 @@ static PyObject *__pyx_f_3_sa_trie_node_data_extend(struct __pyx_t_3_sa__Trie_No    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":77 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":77   *    *    * cdef _Trie_Node* trie_insert(_Trie_Node* node, int val):             # <<<<<<<<<<<<<< @@ -28755,7 +29554,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3    int __pyx_t_3;    __Pyx_RefNannySetupContext("trie_insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":79 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":79   * cdef _Trie_Node* trie_insert(_Trie_Node* node, int val):   *     cdef _Trie_Edge** cur   *     cur = &node.root             # <<<<<<<<<<<<<< @@ -28764,7 +29563,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3   */    __pyx_v_cur = (&__pyx_v_node->root); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":80 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":80   *     cdef _Trie_Edge** cur   *     cur = &node.root   *     while cur[0] != NULL and cur[0].val != val:             # <<<<<<<<<<<<<< @@ -28772,26 +29571,26 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3   *             cur = &cur[0].bigger   */    while (1) { -    __pyx_t_1 = ((__pyx_v_cur[0]) != NULL); +    __pyx_t_1 = (((__pyx_v_cur[0]) != NULL) != 0);      if (__pyx_t_1) { -      __pyx_t_2 = ((__pyx_v_cur[0])->val != __pyx_v_val); +      __pyx_t_2 = (((__pyx_v_cur[0])->val != __pyx_v_val) != 0);        __pyx_t_3 = __pyx_t_2;      } else {        __pyx_t_3 = __pyx_t_1;      }      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":81 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":81   *     cur = &node.root   *     while cur[0] != NULL and cur[0].val != val:   *         if val > cur[0].val:             # <<<<<<<<<<<<<<   *             cur = &cur[0].bigger   *         elif val < cur[0].val:   */ -    __pyx_t_3 = (__pyx_v_val > (__pyx_v_cur[0])->val); +    __pyx_t_3 = ((__pyx_v_val > (__pyx_v_cur[0])->val) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":82 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":82   *     while cur[0] != NULL and cur[0].val != val:   *         if val > cur[0].val:   *             cur = &cur[0].bigger             # <<<<<<<<<<<<<< @@ -28802,17 +29601,17 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3        goto __pyx_L5;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":83 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":83   *         if val > cur[0].val:   *             cur = &cur[0].bigger   *         elif val < cur[0].val:             # <<<<<<<<<<<<<<   *             cur = &cur[0].smaller   *     if cur[0] == NULL:   */ -    __pyx_t_3 = (__pyx_v_val < (__pyx_v_cur[0])->val); +    __pyx_t_3 = ((__pyx_v_val < (__pyx_v_cur[0])->val) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":84 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":84   *             cur = &cur[0].bigger   *         elif val < cur[0].val:   *             cur = &cur[0].smaller             # <<<<<<<<<<<<<< @@ -28825,17 +29624,17 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":85 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":85   *         elif val < cur[0].val:   *             cur = &cur[0].smaller   *     if cur[0] == NULL:             # <<<<<<<<<<<<<<   *         cur[0] = new_trie_edge(val)   *     return cur[0].node   */ -  __pyx_t_3 = ((__pyx_v_cur[0]) == NULL); +  __pyx_t_3 = (((__pyx_v_cur[0]) == NULL) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":86 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":86   *             cur = &cur[0].smaller   *     if cur[0] == NULL:   *         cur[0] = new_trie_edge(val)             # <<<<<<<<<<<<<< @@ -28847,7 +29646,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":87 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":87   *     if cur[0] == NULL:   *         cur[0] = new_trie_edge(val)   *     return cur[0].node             # <<<<<<<<<<<<<< @@ -28863,7 +29662,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_trie_insert(struct __pyx_t_3    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":89 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":89   *     return cur[0].node   *    * cdef trie_node_to_map(_Trie_Node* node, result, prefix, int include_zeros):             # <<<<<<<<<<<<<< @@ -28878,27 +29677,28 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_    int __pyx_t_1;    int __pyx_t_2;    PyObject *__pyx_t_3 = NULL; +  int __pyx_t_4;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("trie_node_to_map", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":92 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":92   *     cdef IntList arr   *    *     if include_zeros or node.arr_len > 0:             # <<<<<<<<<<<<<<   *         arr = IntList()   *         free(arr.arr)   */ -  if (!__pyx_v_include_zeros) { +  if (!(__pyx_v_include_zeros != 0)) {      __pyx_t_1 = (__pyx_v_node->arr_len > 0);      __pyx_t_2 = __pyx_t_1;    } else { -    __pyx_t_2 = __pyx_v_include_zeros; +    __pyx_t_2 = (__pyx_v_include_zeros != 0);    }    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":93 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":93   *    *     if include_zeros or node.arr_len > 0:   *         arr = IntList()             # <<<<<<<<<<<<<< @@ -28910,7 +29710,7 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_      __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":94 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":94   *     if include_zeros or node.arr_len > 0:   *         arr = IntList()   *         free(arr.arr)             # <<<<<<<<<<<<<< @@ -28919,7 +29719,7 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_   */      free(__pyx_v_arr->arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":95 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":95   *         arr = IntList()   *         free(arr.arr)   *         arr.arr = <int*> malloc(node.arr_len * sizeof(int))             # <<<<<<<<<<<<<< @@ -28928,7 +29728,7 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_   */      __pyx_v_arr->arr = ((int *)malloc((__pyx_v_node->arr_len * (sizeof(int))))); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":96 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":96   *         free(arr.arr)   *         arr.arr = <int*> malloc(node.arr_len * sizeof(int))   *         memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))             # <<<<<<<<<<<<<< @@ -28937,25 +29737,27 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_   */      memcpy(__pyx_v_arr->arr, __pyx_v_node->arr, (__pyx_v_node->arr_len * (sizeof(int)))); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":97 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":97   *         arr.arr = <int*> malloc(node.arr_len * sizeof(int))   *         memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))   *         arr.len = node.arr_len             # <<<<<<<<<<<<<<   *         arr.size = node.arr_len   *         result[prefix] = arr   */ -    __pyx_v_arr->len = __pyx_v_node->arr_len; +    __pyx_t_4 = __pyx_v_node->arr_len; +    __pyx_v_arr->len = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":98 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":98   *         memcpy(arr.arr, node.arr, node.arr_len * sizeof(int))   *         arr.len = node.arr_len   *         arr.size = node.arr_len             # <<<<<<<<<<<<<<   *         result[prefix] = arr   *     trie_edge_to_map(node.root, result, prefix, include_zeros)   */ -    __pyx_v_arr->size = __pyx_v_node->arr_len; +    __pyx_t_4 = __pyx_v_node->arr_len; +    __pyx_v_arr->size = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":99 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":99   *         arr.len = node.arr_len   *         arr.size = node.arr_len   *         result[prefix] = arr             # <<<<<<<<<<<<<< @@ -28967,7 +29769,7 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":100 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":100   *         arr.size = node.arr_len   *         result[prefix] = arr   *     trie_edge_to_map(node.root, result, prefix, include_zeros)             # <<<<<<<<<<<<<< @@ -28991,7 +29793,7 @@ static PyObject *__pyx_f_3_sa_trie_node_to_map(struct __pyx_t_3_sa__Trie_Node *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":102 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":102   *     trie_edge_to_map(node.root, result, prefix, include_zeros)   *    * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):             # <<<<<<<<<<<<<< @@ -29011,17 +29813,17 @@ static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *_    __Pyx_RefNannySetupContext("trie_edge_to_map", 0);    __Pyx_INCREF(__pyx_v_prefix); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":103 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":103   *    * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):   *     if edge != NULL:             # <<<<<<<<<<<<<<   *         trie_edge_to_map(edge.smaller, result, prefix, include_zeros)   *         trie_edge_to_map(edge.bigger, result, prefix, include_zeros)   */ -  __pyx_t_1 = (__pyx_v_edge != NULL); +  __pyx_t_1 = ((__pyx_v_edge != NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":104 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":104   * cdef trie_edge_to_map(_Trie_Edge* edge, result, prefix, int include_zeros):   *     if edge != NULL:   *         trie_edge_to_map(edge.smaller, result, prefix, include_zeros)             # <<<<<<<<<<<<<< @@ -29032,7 +29834,7 @@ static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *_      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":105 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":105   *     if edge != NULL:   *         trie_edge_to_map(edge.smaller, result, prefix, include_zeros)   *         trie_edge_to_map(edge.bigger, result, prefix, include_zeros)             # <<<<<<<<<<<<<< @@ -29043,7 +29845,7 @@ static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *_      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":106 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":106   *         trie_edge_to_map(edge.smaller, result, prefix, include_zeros)   *         trie_edge_to_map(edge.bigger, result, prefix, include_zeros)   *         prefix = prefix + (edge.val,)             # <<<<<<<<<<<<<< @@ -29064,7 +29866,7 @@ static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *_      __pyx_v_prefix = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":107 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":107   *         trie_edge_to_map(edge.bigger, result, prefix, include_zeros)   *         prefix = prefix + (edge.val,)   *         trie_node_to_map(edge.node, result, prefix, include_zeros)             # <<<<<<<<<<<<<< @@ -29096,11 +29898,14 @@ static PyObject *__pyx_f_3_sa_trie_edge_to_map(struct __pyx_t_3_sa__Trie_Edge *_  static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/  static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    int __pyx_v_alphabet_size; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alphabet_size,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alphabet_size,0};      PyObject* values[1] = {0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -29113,8 +29918,7 @@ static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alphabet_size); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alphabet_size)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;        }        if (unlikely(kw_args > 0)) { @@ -29140,7 +29944,7 @@ static int __pyx_pw_3_sa_7TrieMap_1__cinit__(PyObject *__pyx_v_self, PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":114 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":114   *     cdef int V   *    *     def __cinit__(self, int alphabet_size):             # <<<<<<<<<<<<<< @@ -29153,7 +29957,7 @@ static int __pyx_pf_3_sa_7TrieMap___cinit__(struct __pyx_obj_3_sa_TrieMap *__pyx    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":115 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":115   *    *     def __cinit__(self, int alphabet_size):   *         self.V = alphabet_size             # <<<<<<<<<<<<<< @@ -29162,7 +29966,7 @@ static int __pyx_pf_3_sa_7TrieMap___cinit__(struct __pyx_obj_3_sa_TrieMap *__pyx   */    __pyx_v_self->V = __pyx_v_alphabet_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":116 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":116   *     def __cinit__(self, int alphabet_size):   *         self.V = alphabet_size   *         self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))             # <<<<<<<<<<<<<< @@ -29171,7 +29975,7 @@ static int __pyx_pf_3_sa_7TrieMap___cinit__(struct __pyx_obj_3_sa_TrieMap *__pyx   */    __pyx_v_self->root = ((struct __pyx_t_3_sa__Trie_Node **)malloc((__pyx_v_self->V * (sizeof(struct __pyx_t_3_sa__Trie_Node *))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":117 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":117   *         self.V = alphabet_size   *         self.root = <_Trie_Node**> malloc(self.V * sizeof(_Trie_Node*))   *         memset(self.root, 0, self.V * sizeof(_Trie_Node*))             # <<<<<<<<<<<<<< @@ -29194,7 +29998,7 @@ static void __pyx_pw_3_sa_7TrieMap_3__dealloc__(PyObject *__pyx_v_self) {    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":120 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":120   *    *    *     def __dealloc__(self):             # <<<<<<<<<<<<<< @@ -29213,7 +30017,7 @@ static void __pyx_pf_3_sa_7TrieMap_2__dealloc__(struct __pyx_obj_3_sa_TrieMap *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__dealloc__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":122 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":122   *     def __dealloc__(self):   *         cdef int i   *         for i from 0 <= i < self.V:             # <<<<<<<<<<<<<< @@ -29223,17 +30027,17 @@ static void __pyx_pf_3_sa_7TrieMap_2__dealloc__(struct __pyx_obj_3_sa_TrieMap *_    __pyx_t_1 = __pyx_v_self->V;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":123 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":123   *         cdef int i   *         for i from 0 <= i < self.V:   *             if self.root[i] != NULL:             # <<<<<<<<<<<<<<   *                 free_trie_node(self.root[i])   *         free(self.root)   */ -    __pyx_t_2 = ((__pyx_v_self->root[__pyx_v_i]) != NULL); +    __pyx_t_2 = (((__pyx_v_self->root[__pyx_v_i]) != NULL) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":124 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":124   *         for i from 0 <= i < self.V:   *             if self.root[i] != NULL:   *                 free_trie_node(self.root[i])             # <<<<<<<<<<<<<< @@ -29248,7 +30052,7 @@ static void __pyx_pf_3_sa_7TrieMap_2__dealloc__(struct __pyx_obj_3_sa_TrieMap *_      __pyx_L5:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":125 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":125   *             if self.root[i] != NULL:   *                 free_trie_node(self.root[i])   *         free(self.root)             # <<<<<<<<<<<<<< @@ -29276,7 +30080,7 @@ static PyObject *__pyx_pw_3_sa_7TrieMap_5insert(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":128 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":128   *    *    *     def insert(self, pattern):             # <<<<<<<<<<<<<< @@ -29299,7 +30103,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":131 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":131   *         cdef int* p   *         cdef int i, l   *         l = len(pattern)             # <<<<<<<<<<<<<< @@ -29309,7 +30113,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_    __pyx_t_1 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_l = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":132 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":132   *         cdef int i, l   *         l = len(pattern)   *         p = <int*> malloc(l*sizeof(int))             # <<<<<<<<<<<<<< @@ -29318,7 +30122,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_   */    __pyx_v_p = ((int *)malloc((__pyx_v_l * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":133 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":133   *         l = len(pattern)   *         p = <int*> malloc(l*sizeof(int))   *         for i from 0 <= i < l:             # <<<<<<<<<<<<<< @@ -29328,21 +30132,21 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_    __pyx_t_2 = __pyx_v_l;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":134 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":134   *         p = <int*> malloc(l*sizeof(int))   *         for i from 0 <= i < l:   *             p[i] = pattern[i]             # <<<<<<<<<<<<<<   *         self._insert(p,l)   *         free(p)   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 134; __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[11]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      (__pyx_v_p[__pyx_v_i]) = __pyx_t_4;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":135 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":135   *         for i from 0 <= i < l:   *             p[i] = pattern[i]   *         self._insert(p,l)             # <<<<<<<<<<<<<< @@ -29351,7 +30155,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_   */    ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_self->__pyx_vtab)->_insert(__pyx_v_self, __pyx_v_p, __pyx_v_l); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":136 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":136   *             p[i] = pattern[i]   *         self._insert(p,l)   *         free(p)             # <<<<<<<<<<<<<< @@ -29372,7 +30176,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_4insert(struct __pyx_obj_3_sa_TrieMap *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":139 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":139   *    *    *     cdef _Trie_Node* _insert(self, int* pattern, int pattern_len):             # <<<<<<<<<<<<<< @@ -29389,17 +30193,17 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __py    int __pyx_t_2;    __Pyx_RefNannySetupContext("_insert", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":142 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":142   *         cdef int i   *         cdef _Trie_Node* node   *         if self.root[pattern[0]] == NULL:             # <<<<<<<<<<<<<<   *             self.root[pattern[0]] = new_trie_node()   *         node = self.root[pattern[0]]   */ -  __pyx_t_1 = ((__pyx_v_self->root[(__pyx_v_pattern[0])]) == NULL); +  __pyx_t_1 = (((__pyx_v_self->root[(__pyx_v_pattern[0])]) == NULL) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":143 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":143   *         cdef _Trie_Node* node   *         if self.root[pattern[0]] == NULL:   *             self.root[pattern[0]] = new_trie_node()             # <<<<<<<<<<<<<< @@ -29411,7 +30215,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __py    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":144 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":144   *         if self.root[pattern[0]] == NULL:   *             self.root[pattern[0]] = new_trie_node()   *         node = self.root[pattern[0]]             # <<<<<<<<<<<<<< @@ -29420,7 +30224,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __py   */    __pyx_v_node = (__pyx_v_self->root[(__pyx_v_pattern[0])]); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":145 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":145   *             self.root[pattern[0]] = new_trie_node()   *         node = self.root[pattern[0]]   *         for i from 1 <= i < pattern_len:             # <<<<<<<<<<<<<< @@ -29430,7 +30234,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __py    __pyx_t_2 = __pyx_v_pattern_len;    for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":146 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":146   *         node = self.root[pattern[0]]   *         for i from 1 <= i < pattern_len:   *             node = trie_insert(node, pattern[i])             # <<<<<<<<<<<<<< @@ -29440,7 +30244,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__insert(struct __py      __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_pattern[__pyx_v_i]));    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":147 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":147   *         for i from 1 <= i < pattern_len:   *             node = trie_insert(node, pattern[i])   *         return node             # <<<<<<<<<<<<<< @@ -29467,7 +30271,7 @@ static PyObject *__pyx_pw_3_sa_7TrieMap_7contains(PyObject *__pyx_v_self, PyObje    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":149 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":149   *         return node   *    *     def contains(self, pattern):             # <<<<<<<<<<<<<< @@ -29492,7 +30296,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("contains", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":153 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":153   *         cdef int i, l   *         cdef _Trie_Node* node   *         l = len(pattern)             # <<<<<<<<<<<<<< @@ -29502,7 +30306,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap    __pyx_t_1 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_l = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":154 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":154   *         cdef _Trie_Node* node   *         l = len(pattern)   *         p = <int*> malloc(l*sizeof(int))             # <<<<<<<<<<<<<< @@ -29511,7 +30315,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap   */    __pyx_v_p = ((int *)malloc((__pyx_v_l * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":155 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":155   *         l = len(pattern)   *         p = <int*> malloc(l*sizeof(int))   *         for i from 0 <= i < l:             # <<<<<<<<<<<<<< @@ -29521,21 +30325,21 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap    __pyx_t_2 = __pyx_v_l;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":156 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":156   *         p = <int*> malloc(l*sizeof(int))   *         for i from 0 <= i < l:   *             p[i] = pattern[i]             # <<<<<<<<<<<<<<   *         node = self._contains(p,l)   *         free(p)   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pattern, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 156; __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[11]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      (__pyx_v_p[__pyx_v_i]) = __pyx_t_4;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":157 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":157   *         for i from 0 <= i < l:   *             p[i] = pattern[i]   *         node = self._contains(p,l)             # <<<<<<<<<<<<<< @@ -29544,7 +30348,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap   */    __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_self->__pyx_vtab)->_contains(__pyx_v_self, __pyx_v_p, __pyx_v_l); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":158 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":158   *             p[i] = pattern[i]   *         node = self._contains(p,l)   *         free(p)             # <<<<<<<<<<<<<< @@ -29553,17 +30357,17 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap   */    free(__pyx_v_p); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":159 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":159   *         node = self._contains(p,l)   *         free(p)   *         if node == NULL:             # <<<<<<<<<<<<<<   *             return False   *         else:   */ -  __pyx_t_5 = (__pyx_v_node == NULL); +  __pyx_t_5 = ((__pyx_v_node == NULL) != 0);    if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":160 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":160   *         free(p)   *         if node == NULL:   *             return False             # <<<<<<<<<<<<<< @@ -29580,7 +30384,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":162 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":162   *             return False   *         else:   *             return True             # <<<<<<<<<<<<<< @@ -29608,7 +30412,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_6contains(struct __pyx_obj_3_sa_TrieMap    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":164 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":164   *             return True   *    *     cdef _Trie_Node* _contains(self, int* pattern, int pattern_len):             # <<<<<<<<<<<<<< @@ -29626,7 +30430,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __    int __pyx_t_3;    __Pyx_RefNannySetupContext("_contains", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":167 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":167   *         cdef int i   *         cdef _Trie_Node* node   *         node = self.root[pattern[0]]             # <<<<<<<<<<<<<< @@ -29635,7 +30439,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __   */    __pyx_v_node = (__pyx_v_self->root[(__pyx_v_pattern[0])]); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":168 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":168   *         cdef _Trie_Node* node   *         node = self.root[pattern[0]]   *         i = 1             # <<<<<<<<<<<<<< @@ -29644,7 +30448,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __   */    __pyx_v_i = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":169 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":169   *         node = self.root[pattern[0]]   *         i = 1   *         while node != NULL and i < pattern_len:             # <<<<<<<<<<<<<< @@ -29652,16 +30456,16 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __   *             i = i+1   */    while (1) { -    __pyx_t_1 = (__pyx_v_node != NULL); +    __pyx_t_1 = ((__pyx_v_node != NULL) != 0);      if (__pyx_t_1) { -      __pyx_t_2 = (__pyx_v_i < __pyx_v_pattern_len); +      __pyx_t_2 = ((__pyx_v_i < __pyx_v_pattern_len) != 0);        __pyx_t_3 = __pyx_t_2;      } else {        __pyx_t_3 = __pyx_t_1;      }      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":170 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":170   *         i = 1   *         while node != NULL and i < pattern_len:   *             node = trie_find(node, pattern[i])             # <<<<<<<<<<<<<< @@ -29670,7 +30474,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __   */      __pyx_v_node = __pyx_f_3_sa_trie_find(__pyx_v_node, (__pyx_v_pattern[__pyx_v_i])); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":171 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":171   *         while node != NULL and i < pattern_len:   *             node = trie_find(node, pattern[i])   *             i = i+1             # <<<<<<<<<<<<<< @@ -29680,7 +30484,7 @@ static struct __pyx_t_3_sa__Trie_Node *__pyx_f_3_sa_7TrieMap__contains(struct __      __pyx_v_i = (__pyx_v_i + 1);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":172 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":172   *             node = trie_find(node, pattern[i])   *             i = i+1   *         return node             # <<<<<<<<<<<<<< @@ -29707,7 +30511,7 @@ static PyObject *__pyx_pw_3_sa_7TrieMap_9toMap(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":174 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":174   *         return node   *    *     def toMap(self, flag):             # <<<<<<<<<<<<<< @@ -29730,7 +30534,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("toMap", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":177 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":177   *         cdef int i, include_zeros   *    *         if flag:             # <<<<<<<<<<<<<< @@ -29740,7 +30544,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flag); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":178 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":178   *    *         if flag:   *             include_zeros=1             # <<<<<<<<<<<<<< @@ -29752,7 +30556,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":180 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":180   *             include_zeros=1   *         else:   *             include_zeros=0             # <<<<<<<<<<<<<< @@ -29763,7 +30567,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":181 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":181   *         else:   *             include_zeros=0   *         result = {}             # <<<<<<<<<<<<<< @@ -29772,10 +30576,10 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__   */    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -  __pyx_v_result = __pyx_t_2; +  __pyx_v_result = ((PyObject*)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":182 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":182   *             include_zeros=0   *         result = {}   *         for i from 0 <= i < self.V:             # <<<<<<<<<<<<<< @@ -29785,17 +30589,17 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__    __pyx_t_3 = __pyx_v_self->V;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":183 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":183   *         result = {}   *         for i from 0 <= i < self.V:   *             if self.root[i] != NULL:             # <<<<<<<<<<<<<<   *                 trie_node_to_map(self.root[i], result, (i,), include_zeros)   *         return result   */ -    __pyx_t_1 = ((__pyx_v_self->root[__pyx_v_i]) != NULL); +    __pyx_t_1 = (((__pyx_v_self->root[__pyx_v_i]) != NULL) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":184 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":184   *         for i from 0 <= i < self.V:   *             if self.root[i] != NULL:   *                 trie_node_to_map(self.root[i], result, (i,), include_zeros)             # <<<<<<<<<<<<<< @@ -29818,7 +30622,7 @@ static PyObject *__pyx_pf_3_sa_7TrieMap_8toMap(struct __pyx_obj_3_sa_TrieMap *__      __pyx_L6:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":185   *             if self.root[i] != NULL:   *                 trie_node_to_map(self.root[i], result, (i,), include_zeros)   *         return result             # <<<<<<<<<<<<<< @@ -29856,14 +30660,17 @@ static int __pyx_pw_3_sa_14Precomputation_1__cinit__(PyObject *__pyx_v_self, PyO    PyObject *__pyx_v_max_nonterminals = 0;    PyObject *__pyx_v_train_max_initial_size = 0;    PyObject *__pyx_v_train_min_gap_size = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__from_stats,&__pyx_n_s__from_binary,&__pyx_n_s__precompute_rank,&__pyx_n_s_70,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s_71,&__pyx_n_s__train_min_gap_size,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__from_stats,&__pyx_n_s__from_binary,&__pyx_n_s__precompute_rank,&__pyx_n_s_72,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s_73,&__pyx_n_s__train_min_gap_size,0};      PyObject* values[9] = {0,0,0,0,0,0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":200 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":200   *     cdef write_map(self, m, FILE* f)   *    *     def __cinit__(self, fsarray=None, from_stats=None, from_binary=None,             # <<<<<<<<<<<<<< @@ -29919,7 +30726,7 @@ static int __pyx_pw_3_sa_14Precomputation_1__cinit__(PyObject *__pyx_v_self, PyO          }          case  4:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_70); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_72);            if (value) { values[4] = value; kw_args--; }          }          case  5: @@ -29934,7 +30741,7 @@ static int __pyx_pw_3_sa_14Precomputation_1__cinit__(PyObject *__pyx_v_self, PyO          }          case  7:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_71); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_73);            if (value) { values[7] = value; kw_args--; }          }          case  8: @@ -29997,7 +30804,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":204 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":204   *             max_length=5, max_nonterminals=2,   *             train_max_initial_size=10, train_min_gap_size=2):   *         self.precompute_rank = precompute_rank             # <<<<<<<<<<<<<< @@ -30007,7 +30814,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_precompute_rank); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->precompute_rank = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":205 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":205   *             train_max_initial_size=10, train_min_gap_size=2):   *         self.precompute_rank = precompute_rank   *         self.precompute_secondary_rank = precompute_secondary_rank             # <<<<<<<<<<<<<< @@ -30017,7 +30824,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_precompute_secondary_rank); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->precompute_secondary_rank = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":206 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":206   *         self.precompute_rank = precompute_rank   *         self.precompute_secondary_rank = precompute_secondary_rank   *         self.max_length = max_length             # <<<<<<<<<<<<<< @@ -30027,7 +30834,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_max_length); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->max_length = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":207 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":207   *         self.precompute_secondary_rank = precompute_secondary_rank   *         self.max_length = max_length   *         self.max_nonterminals = max_nonterminals             # <<<<<<<<<<<<<< @@ -30037,7 +30844,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_max_nonterminals); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->max_nonterminals = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":208 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":208   *         self.max_length = max_length   *         self.max_nonterminals = max_nonterminals   *         self.train_max_initial_size = train_max_initial_size             # <<<<<<<<<<<<<< @@ -30047,7 +30854,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_train_max_initial_size); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->train_max_initial_size = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":209 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":209   *         self.max_nonterminals = max_nonterminals   *         self.train_max_initial_size = train_max_initial_size   *         self.train_min_gap_size = train_min_gap_size             # <<<<<<<<<<<<<< @@ -30057,7 +30864,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_train_min_gap_size); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->train_min_gap_size = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":210 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":210   *         self.train_max_initial_size = train_max_initial_size   *         self.train_min_gap_size = train_min_gap_size   *         if from_binary:             # <<<<<<<<<<<<<< @@ -30067,14 +30874,14 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":211 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":211   *         self.train_min_gap_size = train_min_gap_size   *         if from_binary:   *             self.read_binary(from_binary)             # <<<<<<<<<<<<<<   *         elif from_stats:   *             self.precompute(from_stats, fsarray)   */ -    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 211; __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[11]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -30089,7 +30896,7 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":212 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":212   *         if from_binary:   *             self.read_binary(from_binary)   *         elif from_stats:             # <<<<<<<<<<<<<< @@ -30099,14 +30906,14 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_stats); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":213 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":213   *             self.read_binary(from_binary)   *         elif from_stats:   *             self.precompute(from_stats, fsarray)             # <<<<<<<<<<<<<<   *    *    */ -    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 213; __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[11]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -30142,11 +30949,14 @@ static int __pyx_pf_3_sa_14Precomputation___cinit__(struct __pyx_obj_3_sa_Precom  static PyObject *__pyx_pw_3_sa_14Precomputation_3read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_14Precomputation_3read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -30159,7 +30969,7 @@ static PyObject *__pyx_pw_3_sa_14Precomputation_3read_binary(PyObject *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":216 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":216   *    *    *     def read_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -30177,7 +30987,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":218 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":218   *     def read_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -30186,7 +30996,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":219 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":219   *         cdef FILE* f   *         f = fopen(filename, "r")   *         fread(&(self.precompute_rank), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30195,7 +31005,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->precompute_rank), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":220 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":220   *         f = fopen(filename, "r")   *         fread(&(self.precompute_rank), sizeof(int), 1, f)   *         fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30204,7 +31014,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->precompute_secondary_rank), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":221 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":221   *         fread(&(self.precompute_rank), sizeof(int), 1, f)   *         fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)   *         fread(&(self.max_length), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30213,7 +31023,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->max_length), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":222 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":222   *         fread(&(self.precompute_secondary_rank), sizeof(int), 1, f)   *         fread(&(self.max_length), sizeof(int), 1, f)   *         fread(&(self.max_nonterminals), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30222,7 +31032,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->max_nonterminals), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":223 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":223   *         fread(&(self.max_length), sizeof(int), 1, f)   *         fread(&(self.max_nonterminals), sizeof(int), 1, f)   *         fread(&(self.train_max_initial_size), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30231,7 +31041,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->train_max_initial_size), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":224 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":224   *         fread(&(self.max_nonterminals), sizeof(int), 1, f)   *         fread(&(self.train_max_initial_size), sizeof(int), 1, f)   *         fread(&(self.train_min_gap_size), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30240,7 +31050,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_   */    fread((&__pyx_v_self->train_min_gap_size), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":225 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":225   *         fread(&(self.train_max_initial_size), sizeof(int), 1, f)   *         fread(&(self.train_min_gap_size), sizeof(int), 1, f)   *         self.precomputed_index = self.read_map(f)             # <<<<<<<<<<<<<< @@ -30255,7 +31065,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_    __pyx_v_self->precomputed_index = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":226 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":226   *         fread(&(self.train_min_gap_size), sizeof(int), 1, f)   *         self.precomputed_index = self.read_map(f)   *         self.precomputed_collocations = self.read_map(f)             # <<<<<<<<<<<<<< @@ -30270,7 +31080,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_    __pyx_v_self->precomputed_collocations = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":227 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":227   *         self.precomputed_index = self.read_map(f)   *         self.precomputed_collocations = self.read_map(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -30295,11 +31105,14 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_2read_binary(struct __pyx_obj_3_  static PyObject *__pyx_pw_3_sa_14Precomputation_5write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_14Precomputation_5write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -30312,7 +31125,7 @@ static PyObject *__pyx_pw_3_sa_14Precomputation_5write_binary(PyObject *__pyx_v_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":230 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":230   *    *    *     def write_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -30331,7 +31144,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":232 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":232   *     def write_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -30340,7 +31153,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":233 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":233   *         cdef FILE* f   *         f = fopen(filename, "w")   *         fwrite(&(self.precompute_rank), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30349,7 +31162,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->precompute_rank), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":234 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":234   *         f = fopen(filename, "w")   *         fwrite(&(self.precompute_rank), sizeof(int), 1, f)   *         fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30358,7 +31171,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->precompute_secondary_rank), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":235 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":235   *         fwrite(&(self.precompute_rank), sizeof(int), 1, f)   *         fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)   *         fwrite(&(self.max_length), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30367,7 +31180,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->max_length), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":236 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":236   *         fwrite(&(self.precompute_secondary_rank), sizeof(int), 1, f)   *         fwrite(&(self.max_length), sizeof(int), 1, f)   *         fwrite(&(self.max_nonterminals), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30376,7 +31189,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->max_nonterminals), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":237 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":237   *         fwrite(&(self.max_length), sizeof(int), 1, f)   *         fwrite(&(self.max_nonterminals), sizeof(int), 1, f)   *         fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30385,7 +31198,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->train_max_initial_size), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":238 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":238   *         fwrite(&(self.max_nonterminals), sizeof(int), 1, f)   *         fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)   *         fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30394,7 +31207,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3   */    fwrite((&__pyx_v_self->train_min_gap_size), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":239 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":239   *         fwrite(&(self.train_max_initial_size), sizeof(int), 1, f)   *         fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)   *         self.write_map(self.precomputed_index, f)             # <<<<<<<<<<<<<< @@ -30408,7 +31221,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":240 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":240   *         fwrite(&(self.train_min_gap_size), sizeof(int), 1, f)   *         self.write_map(self.precomputed_index, f)   *         self.write_map(self.precomputed_collocations, f)             # <<<<<<<<<<<<<< @@ -30422,7 +31235,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":241 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":241   *         self.write_map(self.precomputed_index, f)   *         self.write_map(self.precomputed_collocations, f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -30444,7 +31257,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_4write_binary(struct __pyx_obj_3    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":244 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":244   *    *    *     cdef write_map(self, m, FILE* f):             # <<<<<<<<<<<<<< @@ -30463,21 +31276,19 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __    __Pyx_RefNannyDeclarations    Py_ssize_t __pyx_t_1;    PyObject *__pyx_t_2 = NULL; -  PyObject *__pyx_t_3 = NULL; -  PyObject *(*__pyx_t_4)(PyObject *); +  Py_ssize_t __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)(PyObject *); -  Py_ssize_t __pyx_t_9; -  PyObject *(*__pyx_t_10)(PyObject *); -  int __pyx_t_11; +  int __pyx_t_7; +  Py_ssize_t __pyx_t_8; +  PyObject *(*__pyx_t_9)(PyObject *);    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_map", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":248 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":248   *         cdef IntList arr   *    *         N = len(m)             # <<<<<<<<<<<<<< @@ -30487,7 +31298,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __    __pyx_t_1 = PyObject_Length(__pyx_v_m); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_N = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":249 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":249   *    *         N = len(m)   *         fwrite(&(N), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30496,87 +31307,29 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __   */    fwrite((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":250 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":250   *         N = len(m)   *         fwrite(&(N), sizeof(int), 1, f)   *         for pattern, val in m.iteritems():             # <<<<<<<<<<<<<<   *             N = len(pattern)   *             fwrite(&(N), sizeof(int), 1, f)   */ -  __pyx_t_2 = PyObject_GetAttr(__pyx_v_m, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __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[11]; __pyx_lineno = 250; __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_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0; -    __pyx_t_4 = NULL; -  } else { -    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; +  __pyx_t_1 = 0; +  if (unlikely(__pyx_v_m == Py_None)) { +    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +    {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  for (;;) { -    if (!__pyx_t_4 && 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 (!__pyx_t_4 && 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 = __pyx_t_4(__pyx_t_2); -      if (unlikely(!__pyx_t_3)) { -        if (PyErr_Occurred()) { -          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        break; -      } -      __Pyx_GOTREF(__pyx_t_3); -    } -    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { -      PyObject* sequence = __pyx_t_3; -      if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);  -        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);  -      } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_5 = PyList_GET_ITEM(sequence, 0);  -        __pyx_t_6 = PyList_GET_ITEM(sequence, 1);  -      } -      __Pyx_INCREF(__pyx_t_5); -      __Pyx_INCREF(__pyx_t_6); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    } else { -      Py_ssize_t index = -1; -      __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_7); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; -      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_5); -      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_6); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      goto __pyx_L6_unpacking_done; -      __pyx_L5_unpacking_failed:; -      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_L6_unpacking_done:; -    } +  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_m, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_5); +  __Pyx_XDECREF(__pyx_t_2); +  __pyx_t_2 = __pyx_t_5; +  __pyx_t_5 = 0; +  while (1) { +    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_3, &__pyx_t_1, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); +    if (unlikely(__pyx_t_7 == 0)) break; +    if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __Pyx_GOTREF(__pyx_t_6);      __Pyx_XDECREF(__pyx_v_pattern);      __pyx_v_pattern = __pyx_t_5;      __pyx_t_5 = 0; @@ -30584,17 +31337,17 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __      __pyx_v_val = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":251 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":251   *         fwrite(&(N), sizeof(int), 1, f)   *         for pattern, val in m.iteritems():   *             N = len(pattern)             # <<<<<<<<<<<<<<   *             fwrite(&(N), sizeof(int), 1, f)   *             for word_id in pattern:   */ -    __pyx_t_9 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_v_N = __pyx_t_9; +    __pyx_t_8 = PyObject_Length(__pyx_v_pattern); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_v_N = __pyx_t_8; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":252 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":252   *         for pattern, val in m.iteritems():   *             N = len(pattern)   *             fwrite(&(N), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30603,7 +31356,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __   */      fwrite((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":253 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":253   *             N = len(pattern)   *             fwrite(&(N), sizeof(int), 1, f)   *             for word_id in pattern:             # <<<<<<<<<<<<<< @@ -30611,46 +31364,54 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __   *                 fwrite(&(i), sizeof(int), 1, f)   */      if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) { -      __pyx_t_3 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0; -      __pyx_t_10 = NULL; +      __pyx_t_6 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0; +      __pyx_t_9 = NULL;      } else { -      __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext; +      __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext;      }      for (;;) { -      if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_3)) { -        if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break; -        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; -      } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_3)) { -        if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_3)) break; -        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; +      if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_6)) { +        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif +      } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_6)) { +        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else { -        __pyx_t_6 = __pyx_t_10(__pyx_t_3); -        if (unlikely(!__pyx_t_6)) { +        __pyx_t_5 = __pyx_t_9(__pyx_t_6); +        if (unlikely(!__pyx_t_5)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();              else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } -        __Pyx_GOTREF(__pyx_t_6); +        __Pyx_GOTREF(__pyx_t_5);        }        __Pyx_XDECREF(__pyx_v_word_id); -      __pyx_v_word_id = __pyx_t_6; -      __pyx_t_6 = 0; +      __pyx_v_word_id = __pyx_t_5; +      __pyx_t_5 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":254 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":254   *             fwrite(&(N), sizeof(int), 1, f)   *             for word_id in pattern:   *                 i = word_id             # <<<<<<<<<<<<<<   *                 fwrite(&(i), sizeof(int), 1, f)   *             arr = val   */ -      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_v_i = __pyx_t_11; +      __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_v_i = __pyx_t_7; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":255 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":255   *             for word_id in pattern:   *                 i = word_id   *                 fwrite(&(i), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30659,9 +31420,9 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __   */        fwrite((&__pyx_v_i), (sizeof(int)), 1, __pyx_v_f);      } -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":256 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":256   *                 i = word_id   *                 fwrite(&(i), sizeof(int), 1, f)   *             arr = val             # <<<<<<<<<<<<<< @@ -30673,7 +31434,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __      __Pyx_XDECREF(((PyObject *)__pyx_v_arr));      __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_val); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":257 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":257   *                 fwrite(&(i), sizeof(int), 1, f)   *             arr = val   *             arr.write_handle(f)             # <<<<<<<<<<<<<< @@ -30688,10 +31449,8 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __    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("_sa.Precomputation.write_map", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = 0;    __pyx_L0:; @@ -30704,7 +31463,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_write_map(CYTHON_UNUSED struct __    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":260 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":260   *    *    *     cdef read_map(self, FILE* f):             # <<<<<<<<<<<<<< @@ -30732,7 +31491,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_map", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":264 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":264   *         cdef IntList arr   *    *         m = {}             # <<<<<<<<<<<<<< @@ -30741,10 +31500,10 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p   */    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_m = __pyx_t_1; +  __pyx_v_m = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":265 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":265   *    *         m = {}   *         fread(&(N), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30753,7 +31512,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p   */    fread((&__pyx_v_N), (sizeof(int)), 1, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":266 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":266   *         m = {}   *         fread(&(N), sizeof(int), 1, f)   *         for j from 0 <= j < N:             # <<<<<<<<<<<<<< @@ -30763,7 +31522,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p    __pyx_t_2 = __pyx_v_N;    for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":267 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":267   *         fread(&(N), sizeof(int), 1, f)   *         for j from 0 <= j < N:   *             fread(&(i), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30772,7 +31531,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p   */      fread((&__pyx_v_i), (sizeof(int)), 1, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":268 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":268   *         for j from 0 <= j < N:   *             fread(&(i), sizeof(int), 1, f)   *             key = ()             # <<<<<<<<<<<<<< @@ -30783,7 +31542,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p      __Pyx_XDECREF(((PyObject *)__pyx_v_key));      __pyx_v_key = __pyx_empty_tuple; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":269 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":269   *             fread(&(i), sizeof(int), 1, f)   *             key = ()   *             for k from 0 <= k < i:             # <<<<<<<<<<<<<< @@ -30793,7 +31552,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p      __pyx_t_3 = __pyx_v_i;      for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_3; __pyx_v_k++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":270 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":270   *             key = ()   *             for k from 0 <= k < i:   *                 fread(&(word_id), sizeof(int), 1, f)             # <<<<<<<<<<<<<< @@ -30802,7 +31561,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p   */        fread((&__pyx_v_word_id), (sizeof(int)), 1, __pyx_v_f); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":271 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":271   *             for k from 0 <= k < i:   *                 fread(&(word_id), sizeof(int), 1, f)   *                 key = key + (word_id,)             # <<<<<<<<<<<<<< @@ -30820,11 +31579,11 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p        __Pyx_GOTREF(((PyObject *)__pyx_t_1));        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(((PyObject *)__pyx_v_key)); -      __pyx_v_key = __pyx_t_1; +      __pyx_v_key = ((PyObject*)__pyx_t_1);        __pyx_t_1 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":272 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":272   *                 fread(&(word_id), sizeof(int), 1, f)   *                 key = key + (word_id,)   *             arr = IntList()             # <<<<<<<<<<<<<< @@ -30837,7 +31596,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p      __pyx_v_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":273 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":273   *                 key = key + (word_id,)   *             arr = IntList()   *             arr.read_handle(f)             # <<<<<<<<<<<<<< @@ -30846,7 +31605,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p   */      ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_arr->__pyx_vtab)->read_handle(__pyx_v_arr, __pyx_v_f); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":274 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":274   *             arr = IntList()   *             arr.read_handle(f)   *             m[key] = arr             # <<<<<<<<<<<<<< @@ -30856,7 +31615,7 @@ static PyObject *__pyx_f_3_sa_14Precomputation_read_map(CYTHON_UNUSED struct __p      if (PyDict_SetItem(((PyObject *)__pyx_v_m), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":275 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":275   *             arr.read_handle(f)   *             m[key] = arr   *         return m             # <<<<<<<<<<<<<< @@ -30889,11 +31648,14 @@ static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_se  static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_stats = 0;    struct __pyx_obj_3_sa_SuffixArray *__pyx_v_sarray = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__stats,&__pyx_n_s__sarray,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("precompute (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__stats,&__pyx_n_s__sarray,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -30907,12 +31669,10 @@ static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_se        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stats); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stats)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sarray); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sarray)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("precompute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -30947,7 +31707,7 @@ static PyObject *__pyx_pw_3_sa_14Precomputation_7precompute(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":278 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":278   *    *    *     def precompute(self, stats, SuffixArray sarray):             # <<<<<<<<<<<<<< @@ -31033,27 +31793,31 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("precompute", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":280 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":280   *     def precompute(self, stats, SuffixArray sarray):   *         cdef int i, l, N, max_pattern_len, i1, l1, i2, l2, i3, l3, ptr1, ptr2, ptr3, is_super, sent_count, max_rank   *         cdef DataArray darray = sarray.darray             # <<<<<<<<<<<<<<   *         cdef IntList data, queue, cost_by_rank, count_by_rank   *         cdef TrieMap frequent_patterns, super_frequent_patterns, collocations   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_sarray->darray)); -  __pyx_v_darray = __pyx_v_sarray->darray; +  __pyx_t_1 = ((PyObject *)__pyx_v_sarray->darray); +  __Pyx_INCREF(__pyx_t_1); +  __pyx_v_darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":285 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":285   *         cdef _Trie_Node* node   *    *         data = darray.data             # <<<<<<<<<<<<<<   *    *         frequent_patterns = TrieMap(len(darray.id2word))   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_darray->data)); -  __pyx_v_data = __pyx_v_darray->data; +  __pyx_t_1 = ((PyObject *)__pyx_v_darray->data); +  __Pyx_INCREF(__pyx_t_1); +  __pyx_v_data = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":287 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":287   *         data = darray.data   *    *         frequent_patterns = TrieMap(len(darray.id2word))             # <<<<<<<<<<<<<< @@ -31077,7 +31841,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_frequent_patterns = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":288 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":288   *    *         frequent_patterns = TrieMap(len(darray.id2word))   *         super_frequent_patterns = TrieMap(len(darray.id2word))             # <<<<<<<<<<<<<< @@ -31101,7 +31865,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_super_frequent_patterns = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":289 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":289   *         frequent_patterns = TrieMap(len(darray.id2word))   *         super_frequent_patterns = TrieMap(len(darray.id2word))   *         collocations = TrieMap(len(darray.id2word))             # <<<<<<<<<<<<<< @@ -31125,7 +31889,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_collocations = ((struct __pyx_obj_3_sa_TrieMap *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":291 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":291   *         collocations = TrieMap(len(darray.id2word))   *    *         I_set = set()             # <<<<<<<<<<<<<< @@ -31134,10 +31898,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_I_set = __pyx_t_1; +  __pyx_v_I_set = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":292 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":292   *    *         I_set = set()   *         J_set = set()             # <<<<<<<<<<<<<< @@ -31146,10 +31910,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_J_set = __pyx_t_1; +  __pyx_v_J_set = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":293 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":293   *         I_set = set()   *         J_set = set()   *         J2_set = set()             # <<<<<<<<<<<<<< @@ -31158,10 +31922,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_J2_set = __pyx_t_1; +  __pyx_v_J2_set = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":294 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":294   *         J_set = set()   *         J2_set = set()   *         IJ_set = set()             # <<<<<<<<<<<<<< @@ -31170,10 +31934,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_IJ_set = __pyx_t_1; +  __pyx_v_IJ_set = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":295 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":295   *         J2_set = set()   *         IJ_set = set()   *         pattern_rank = {}             # <<<<<<<<<<<<<< @@ -31182,34 +31946,34 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -  __pyx_v_pattern_rank = __pyx_t_1; +  __pyx_v_pattern_rank = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":297 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":297   *         pattern_rank = {}   *    *         logger.info("Precomputing frequent intersections")             # <<<<<<<<<<<<<<   *         cdef float start_time = monitor_cpu()   *    */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_73), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_75), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __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; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":298 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":298   *    *         logger.info("Precomputing frequent intersections")   *         cdef float start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *    *         max_pattern_len = 0   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 298; __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[11]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -31218,7 +31982,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    __pyx_v_start_time = __pyx_t_4; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":300 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":300   *         cdef float start_time = monitor_cpu()   *    *         max_pattern_len = 0             # <<<<<<<<<<<<<< @@ -31227,7 +31991,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_v_max_pattern_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":301 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":301   *    *         max_pattern_len = 0   *         for rank, (_, _, phrase) in enumerate(stats):             # <<<<<<<<<<<<<< @@ -31247,10 +32011,18 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    for (;;) {      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_6 = __pyx_t_5(__pyx_t_1);        if (unlikely(!__pyx_t_6)) { @@ -31264,21 +32036,22 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      }      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {        PyObject* sequence = __pyx_t_6; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_7 = PyList_GET_ITEM(sequence, 0);           __pyx_t_8 = PyList_GET_ITEM(sequence, 1);           __pyx_t_9 = PyList_GET_ITEM(sequence, 2);  @@ -31286,8 +32059,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __Pyx_INCREF(__pyx_t_7);        __Pyx_INCREF(__pyx_t_8);        __Pyx_INCREF(__pyx_t_9); +      #else +      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_7); +      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_9 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_9); +      #endif        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10); @@ -31300,12 +32082,13 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        index = 2; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;        __Pyx_GOTREF(__pyx_t_9);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = NULL;        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        goto __pyx_L6_unpacking_done;        __pyx_L5_unpacking_failed:;        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_11 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[11]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L6_unpacking_done:;      } @@ -31327,7 +32110,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_t_3 = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":302 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":302   *         max_pattern_len = 0   *         for rank, (_, _, phrase) in enumerate(stats):   *             if rank >= self.precompute_rank:             # <<<<<<<<<<<<<< @@ -31336,14 +32119,13 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_t_6 = PyInt_FromLong(__pyx_v_self->precompute_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_9 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_6, Py_GE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_9); +    __pyx_t_9 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_6, Py_GE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;      if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":303 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":303   *         for rank, (_, _, phrase) in enumerate(stats):   *             if rank >= self.precompute_rank:   *                 break             # <<<<<<<<<<<<<< @@ -31355,7 +32137,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":304 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":304   *             if rank >= self.precompute_rank:   *                 break   *             max_pattern_len = max(max_pattern_len, len(phrase))             # <<<<<<<<<<<<<< @@ -31364,21 +32146,21 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_t_13 = PyObject_Length(__pyx_v_phrase); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_14 = __pyx_v_max_pattern_len; -    if ((__pyx_t_13 > __pyx_t_14)) { +    if (((__pyx_t_13 > __pyx_t_14) != 0)) {        __pyx_t_15 = __pyx_t_13;      } else {        __pyx_t_15 = __pyx_t_14;      }      __pyx_v_max_pattern_len = __pyx_t_15; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":305 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":305   *                 break   *             max_pattern_len = max(max_pattern_len, len(phrase))   *             frequent_patterns.insert(phrase)             # <<<<<<<<<<<<<<   *             I_set.add(phrase)   *             pattern_rank[phrase] = rank   */ -    __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9);      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); @@ -31391,7 +32173,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":306 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":306   *             max_pattern_len = max(max_pattern_len, len(phrase))   *             frequent_patterns.insert(phrase)   *             I_set.add(phrase)             # <<<<<<<<<<<<<< @@ -31400,7 +32182,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_t_16 = PySet_Add(__pyx_v_I_set, __pyx_v_phrase); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":307 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":307   *             frequent_patterns.insert(phrase)   *             I_set.add(phrase)   *             pattern_rank[phrase] = rank             # <<<<<<<<<<<<<< @@ -31409,7 +32191,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      if (PyDict_SetItem(((PyObject *)__pyx_v_pattern_rank), __pyx_v_phrase, __pyx_v_rank) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":308 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":308   *             I_set.add(phrase)   *             pattern_rank[phrase] = rank   *             if rank < self.precompute_secondary_rank:             # <<<<<<<<<<<<<< @@ -31418,21 +32200,20 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_t_8 = PyInt_FromLong(__pyx_v_self->precompute_secondary_rank); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_6 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_8, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); +    __pyx_t_6 = PyObject_RichCompare(__pyx_v_rank, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":309 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":309   *             pattern_rank[phrase] = rank   *             if rank < self.precompute_secondary_rank:   *                 super_frequent_patterns.insert(phrase)             # <<<<<<<<<<<<<<   *                 J_set.add(phrase)   *    */ -      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_super_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_super_frequent_patterns), __pyx_n_s__insert); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); @@ -31445,7 +32226,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":310 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":310   *             if rank < self.precompute_secondary_rank:   *                 super_frequent_patterns.insert(phrase)   *                 J_set.add(phrase)             # <<<<<<<<<<<<<< @@ -31461,7 +32242,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":312 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":312   *                 J_set.add(phrase)   *    *         queue = IntList(increment=1000)             # <<<<<<<<<<<<<< @@ -31477,24 +32258,24 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_queue = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":314 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":314   *         queue = IntList(increment=1000)   *    *         logger.info("    Computing inverted indexes...")             # <<<<<<<<<<<<<<   *         N = len(data)   *         for i from 0 <= i < N:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_75), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_77), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __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; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":315 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":315   *    *         logger.info("    Computing inverted indexes...")   *         N = len(data)             # <<<<<<<<<<<<<< @@ -31504,7 +32285,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_data)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_N = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":316 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":316   *         logger.info("    Computing inverted indexes...")   *         N = len(data)   *         for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -31514,7 +32295,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_t_14 = __pyx_v_N;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":317 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":317   *         N = len(data)   *         for i from 0 <= i < N:   *             sa_word_id = data.arr[i]             # <<<<<<<<<<<<<< @@ -31523,17 +32304,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_v_sa_word_id = (__pyx_v_data->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":318 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":318   *         for i from 0 <= i < N:   *             sa_word_id = data.arr[i]   *             if sa_word_id == 1:             # <<<<<<<<<<<<<<   *                 queue._append(-1)   *             else:   */ -    __pyx_t_12 = (__pyx_v_sa_word_id == 1); +    __pyx_t_12 = ((__pyx_v_sa_word_id == 1) != 0);      if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":319 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":319   *             sa_word_id = data.arr[i]   *             if sa_word_id == 1:   *                 queue._append(-1)             # <<<<<<<<<<<<<< @@ -31545,7 +32326,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":321 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":321   *                 queue._append(-1)   *             else:   *                 for l from 1 <= l <= max_pattern_len:             # <<<<<<<<<<<<<< @@ -31555,7 +32336,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_t_17 = __pyx_v_max_pattern_len;        for (__pyx_v_l = 1; __pyx_v_l <= __pyx_t_17; __pyx_v_l++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":322 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":322   *             else:   *                 for l from 1 <= l <= max_pattern_len:   *                     node = frequent_patterns._contains(data.arr+i, l)             # <<<<<<<<<<<<<< @@ -31564,17 +32345,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i), __pyx_v_l); -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":323 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":323   *                 for l from 1 <= l <= max_pattern_len:   *                     node = frequent_patterns._contains(data.arr+i, l)   *                     if node == NULL:             # <<<<<<<<<<<<<<   *                         break   *                     queue._append(i)   */ -        __pyx_t_12 = (__pyx_v_node == NULL); +        __pyx_t_12 = ((__pyx_v_node == NULL) != 0);          if (__pyx_t_12) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":324 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":324   *                     node = frequent_patterns._contains(data.arr+i, l)   *                     if node == NULL:   *                         break             # <<<<<<<<<<<<<< @@ -31586,7 +32367,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          }          __pyx_L14:; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":325 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":325   *                     if node == NULL:   *                         break   *                     queue._append(i)             # <<<<<<<<<<<<<< @@ -31595,7 +32376,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_queue->__pyx_vtab)->_append(__pyx_v_queue, __pyx_v_i); -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":326 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":326   *                         break   *                     queue._append(i)   *                     queue._append(l)             # <<<<<<<<<<<<<< @@ -31604,7 +32385,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_queue->__pyx_vtab)->_append(__pyx_v_queue, __pyx_v_l); -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":327 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":327   *                     queue._append(i)   *                     queue._append(l)   *                     trie_node_data_append(node, i)             # <<<<<<<<<<<<<< @@ -31620,24 +32401,24 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_L11:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":329 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":329   *                     trie_node_data_append(node, i)   *    *         logger.info("    Computing collocations...")             # <<<<<<<<<<<<<<   *         N = len(queue)   *         ptr1 = 0   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_77), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_79), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __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; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":330 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":330   *    *         logger.info("    Computing collocations...")   *         N = len(queue)             # <<<<<<<<<<<<<< @@ -31647,7 +32428,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_queue)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_N = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":331 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":331   *         logger.info("    Computing collocations...")   *         N = len(queue)   *         ptr1 = 0             # <<<<<<<<<<<<<< @@ -31656,7 +32437,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_v_ptr1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":332 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":332   *         N = len(queue)   *         ptr1 = 0   *         sent_count = 0             # <<<<<<<<<<<<<< @@ -31665,7 +32446,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */    __pyx_v_sent_count = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":333 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":333   *         ptr1 = 0   *         sent_count = 0   *         while ptr1 < N:    # main loop             # <<<<<<<<<<<<<< @@ -31673,10 +32454,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   *             if i1 > -1:   */    while (1) { -    __pyx_t_12 = (__pyx_v_ptr1 < __pyx_v_N); +    __pyx_t_12 = ((__pyx_v_ptr1 < __pyx_v_N) != 0);      if (!__pyx_t_12) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":334 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":334   *         sent_count = 0   *         while ptr1 < N:    # main loop   *             i1 = queue.arr[ptr1]             # <<<<<<<<<<<<<< @@ -31685,17 +32466,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */      __pyx_v_i1 = (__pyx_v_queue->arr[__pyx_v_ptr1]); -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":335 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":335   *         while ptr1 < N:    # main loop   *             i1 = queue.arr[ptr1]   *             if i1 > -1:             # <<<<<<<<<<<<<<   *                 l1 = queue.arr[ptr1+1]   *                 ptr2 = ptr1 + 2   */ -    __pyx_t_12 = (__pyx_v_i1 > -1); +    __pyx_t_12 = ((__pyx_v_i1 > -1) != 0);      if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":336 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":336   *             i1 = queue.arr[ptr1]   *             if i1 > -1:   *                 l1 = queue.arr[ptr1+1]             # <<<<<<<<<<<<<< @@ -31704,7 +32485,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_v_l1 = (__pyx_v_queue->arr[(__pyx_v_ptr1 + 1)]); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":337 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":337   *             if i1 > -1:   *                 l1 = queue.arr[ptr1+1]   *                 ptr2 = ptr1 + 2             # <<<<<<<<<<<<<< @@ -31713,7 +32494,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_v_ptr2 = (__pyx_v_ptr1 + 2); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":338 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":338   *                 l1 = queue.arr[ptr1+1]   *                 ptr2 = ptr1 + 2   *                 while ptr2 < N:             # <<<<<<<<<<<<<< @@ -31721,10 +32502,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   *                     if i2 == -1 or i2 - i1 >= self.train_max_initial_size:   */        while (1) { -        __pyx_t_12 = (__pyx_v_ptr2 < __pyx_v_N); +        __pyx_t_12 = ((__pyx_v_ptr2 < __pyx_v_N) != 0);          if (!__pyx_t_12) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":339 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":339   *                 ptr2 = ptr1 + 2   *                 while ptr2 < N:   *                     i2 = queue.arr[ptr2]             # <<<<<<<<<<<<<< @@ -31733,23 +32514,23 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          __pyx_v_i2 = (__pyx_v_queue->arr[__pyx_v_ptr2]); -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":340 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":340   *                 while ptr2 < N:   *                     i2 = queue.arr[ptr2]   *                     if i2 == -1 or i2 - i1 >= self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                         break   *                     l2 = queue.arr[ptr2+1]   */ -        __pyx_t_12 = (__pyx_v_i2 == -1); +        __pyx_t_12 = ((__pyx_v_i2 == -1) != 0);          if (!__pyx_t_12) { -          __pyx_t_18 = ((__pyx_v_i2 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size); +          __pyx_t_18 = (((__pyx_v_i2 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size) != 0);            __pyx_t_19 = __pyx_t_18;          } else {            __pyx_t_19 = __pyx_t_12;          }          if (__pyx_t_19) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":341 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":341   *                     i2 = queue.arr[ptr2]   *                     if i2 == -1 or i2 - i1 >= self.train_max_initial_size:   *                         break             # <<<<<<<<<<<<<< @@ -31761,7 +32542,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          }          __pyx_L20:; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":342 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":342   *                     if i2 == -1 or i2 - i1 >= self.train_max_initial_size:   *                         break   *                     l2 = queue.arr[ptr2+1]             # <<<<<<<<<<<<<< @@ -31770,34 +32551,34 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          __pyx_v_l2 = (__pyx_v_queue->arr[(__pyx_v_ptr2 + 1)]); -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":343 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":343   *                         break   *                     l2 = queue.arr[ptr2+1]   *                     if (i2 - i1 - l1 >= self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                             i2 + l2 - i1 <= self.train_max_initial_size and   *                             l1+l2+1 <= self.max_length):   */ -        __pyx_t_19 = (((__pyx_v_i2 - __pyx_v_i1) - __pyx_v_l1) >= __pyx_v_self->train_min_gap_size); +        __pyx_t_19 = ((((__pyx_v_i2 - __pyx_v_i1) - __pyx_v_l1) >= __pyx_v_self->train_min_gap_size) != 0);          if (__pyx_t_19) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":344 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":344   *                     l2 = queue.arr[ptr2+1]   *                     if (i2 - i1 - l1 >= self.train_min_gap_size and   *                             i2 + l2 - i1 <= self.train_max_initial_size and             # <<<<<<<<<<<<<<   *                             l1+l2+1 <= self.max_length):   *                         node = collocations._insert(data.arr+i1, l1)   */ -          __pyx_t_12 = (((__pyx_v_i2 + __pyx_v_l2) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size); +          __pyx_t_12 = ((((__pyx_v_i2 + __pyx_v_l2) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size) != 0);            if (__pyx_t_12) { -            /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":345 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":345   *                     if (i2 - i1 - l1 >= self.train_min_gap_size and   *                             i2 + l2 - i1 <= self.train_max_initial_size and   *                             l1+l2+1 <= self.max_length):             # <<<<<<<<<<<<<<   *                         node = collocations._insert(data.arr+i1, l1)   *                         node = trie_insert(node, -1)   */ -            __pyx_t_18 = (((__pyx_v_l1 + __pyx_v_l2) + 1) <= __pyx_v_self->max_length); +            __pyx_t_18 = ((((__pyx_v_l1 + __pyx_v_l2) + 1) <= __pyx_v_self->max_length) != 0);              __pyx_t_20 = __pyx_t_18;            } else {              __pyx_t_20 = __pyx_t_12; @@ -31808,7 +32589,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          }          if (__pyx_t_12) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":346 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":346   *                             i2 + l2 - i1 <= self.train_max_initial_size and   *                             l1+l2+1 <= self.max_length):   *                         node = collocations._insert(data.arr+i1, l1)             # <<<<<<<<<<<<<< @@ -31817,7 +32598,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */            __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_collocations->__pyx_vtab)->_insert(__pyx_v_collocations, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1); -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":347 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":347   *                             l1+l2+1 <= self.max_length):   *                         node = collocations._insert(data.arr+i1, l1)   *                         node = trie_insert(node, -1)             # <<<<<<<<<<<<<< @@ -31826,7 +32607,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */            __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1); -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":348 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":348   *                         node = collocations._insert(data.arr+i1, l1)   *                         node = trie_insert(node, -1)   *                         for i from i2 <= i < i2+l2:             # <<<<<<<<<<<<<< @@ -31836,7 +32617,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s            __pyx_t_14 = (__pyx_v_i2 + __pyx_v_l2);            for (__pyx_v_i = __pyx_v_i2; __pyx_v_i < __pyx_t_14; __pyx_v_i++) { -            /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":349 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":349   *                         node = trie_insert(node, -1)   *                         for i from i2 <= i < i2+l2:   *                             node = trie_insert(node, data.arr[i])             # <<<<<<<<<<<<<< @@ -31846,7 +32627,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s              __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));            } -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":350 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":350   *                         for i from i2 <= i < i2+l2:   *                             node = trie_insert(node, data.arr[i])   *                         trie_node_data_append(node, i1)             # <<<<<<<<<<<<<< @@ -31857,7 +32638,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s            __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":351 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":351   *                             node = trie_insert(node, data.arr[i])   *                         trie_node_data_append(node, i1)   *                         trie_node_data_append(node, i2)             # <<<<<<<<<<<<<< @@ -31868,27 +32649,27 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s            __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":352 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":352   *                         trie_node_data_append(node, i1)   *                         trie_node_data_append(node, i2)   *                         if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:             # <<<<<<<<<<<<<<   *                             if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:   *                                 is_super = 1   */ -          __pyx_t_12 = (((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i2), __pyx_v_l2) != NULL); +          __pyx_t_12 = ((((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i2), __pyx_v_l2) != NULL) != 0);            if (__pyx_t_12) { -            /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":353 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":353   *                         trie_node_data_append(node, i2)   *                         if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:   *                             if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:             # <<<<<<<<<<<<<<   *                                 is_super = 1   *                             else:   */ -            __pyx_t_12 = (((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1) != NULL); +            __pyx_t_12 = ((((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1) != NULL) != 0);              if (__pyx_t_12) { -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":354 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":354   *                         if super_frequent_patterns._contains(data.arr+i2, l2) != NULL:   *                             if super_frequent_patterns._contains(data.arr+i1, l1) != NULL:   *                                 is_super = 1             # <<<<<<<<<<<<<< @@ -31900,7 +32681,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s              }              /*else*/ { -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":356 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":356   *                                 is_super = 1   *                             else:   *                                 is_super = 0             # <<<<<<<<<<<<<< @@ -31911,7 +32692,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s              }              __pyx_L25:; -            /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":357 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":357   *                             else:   *                                 is_super = 0   *                             ptr3 = ptr2 + 2             # <<<<<<<<<<<<<< @@ -31920,7 +32701,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */              __pyx_v_ptr3 = (__pyx_v_ptr2 + 2); -            /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":358 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":358   *                                 is_super = 0   *                             ptr3 = ptr2 + 2   *                             while ptr3 < N:             # <<<<<<<<<<<<<< @@ -31928,10 +32709,10 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   *                                 if i3 == -1 or i3 - i1 >= self.train_max_initial_size:   */              while (1) { -              __pyx_t_12 = (__pyx_v_ptr3 < __pyx_v_N); +              __pyx_t_12 = ((__pyx_v_ptr3 < __pyx_v_N) != 0);                if (!__pyx_t_12) break; -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":359 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":359   *                             ptr3 = ptr2 + 2   *                             while ptr3 < N:   *                                 i3 = queue.arr[ptr3]             # <<<<<<<<<<<<<< @@ -31940,23 +32721,23 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */                __pyx_v_i3 = (__pyx_v_queue->arr[__pyx_v_ptr3]); -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":360 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":360   *                             while ptr3 < N:   *                                 i3 = queue.arr[ptr3]   *                                 if i3 == -1 or i3 - i1 >= self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                                     break   *                                 l3 = queue.arr[ptr3+1]   */ -              __pyx_t_12 = (__pyx_v_i3 == -1); +              __pyx_t_12 = ((__pyx_v_i3 == -1) != 0);                if (!__pyx_t_12) { -                __pyx_t_19 = ((__pyx_v_i3 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size); +                __pyx_t_19 = (((__pyx_v_i3 - __pyx_v_i1) >= __pyx_v_self->train_max_initial_size) != 0);                  __pyx_t_20 = __pyx_t_19;                } else {                  __pyx_t_20 = __pyx_t_12;                }                if (__pyx_t_20) { -                /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":361 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":361   *                                 i3 = queue.arr[ptr3]   *                                 if i3 == -1 or i3 - i1 >= self.train_max_initial_size:   *                                     break             # <<<<<<<<<<<<<< @@ -31968,7 +32749,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                }                __pyx_L28:; -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":362 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":362   *                                 if i3 == -1 or i3 - i1 >= self.train_max_initial_size:   *                                     break   *                                 l3 = queue.arr[ptr3+1]             # <<<<<<<<<<<<<< @@ -31977,34 +32758,34 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */                __pyx_v_l3 = (__pyx_v_queue->arr[(__pyx_v_ptr3 + 1)]); -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":363 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":363   *                                     break   *                                 l3 = queue.arr[ptr3+1]   *                                 if (i3 - i2 - l2 >= self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                                         i3 + l3 - i1 <= self.train_max_initial_size and   *                                         l1+l2+l3+2 <= self.max_length):   */ -              __pyx_t_20 = (((__pyx_v_i3 - __pyx_v_i2) - __pyx_v_l2) >= __pyx_v_self->train_min_gap_size); +              __pyx_t_20 = ((((__pyx_v_i3 - __pyx_v_i2) - __pyx_v_l2) >= __pyx_v_self->train_min_gap_size) != 0);                if (__pyx_t_20) { -                /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":364 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":364   *                                 l3 = queue.arr[ptr3+1]   *                                 if (i3 - i2 - l2 >= self.train_min_gap_size and   *                                         i3 + l3 - i1 <= self.train_max_initial_size and             # <<<<<<<<<<<<<<   *                                         l1+l2+l3+2 <= self.max_length):   *                                     if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:   */ -                __pyx_t_12 = (((__pyx_v_i3 + __pyx_v_l3) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size); +                __pyx_t_12 = ((((__pyx_v_i3 + __pyx_v_l3) - __pyx_v_i1) <= __pyx_v_self->train_max_initial_size) != 0);                  if (__pyx_t_12) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":365 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":365   *                                 if (i3 - i2 - l2 >= self.train_min_gap_size and   *                                         i3 + l3 - i1 <= self.train_max_initial_size and   *                                         l1+l2+l3+2 <= self.max_length):             # <<<<<<<<<<<<<<   *                                     if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:   *                                         node = collocations._insert(data.arr+i1, l1)   */ -                  __pyx_t_19 = ((((__pyx_v_l1 + __pyx_v_l2) + __pyx_v_l3) + 2) <= __pyx_v_self->max_length); +                  __pyx_t_19 = (((((__pyx_v_l1 + __pyx_v_l2) + __pyx_v_l3) + 2) <= __pyx_v_self->max_length) != 0);                    __pyx_t_18 = __pyx_t_19;                  } else {                    __pyx_t_18 = __pyx_t_12; @@ -32015,22 +32796,22 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                }                if (__pyx_t_12) { -                /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":366 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":366   *                                         i3 + l3 - i1 <= self.train_max_initial_size and   *                                         l1+l2+l3+2 <= self.max_length):   *                                     if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:             # <<<<<<<<<<<<<<   *                                         node = collocations._insert(data.arr+i1, l1)   *                                         node = trie_insert(node, -1)   */ -                if (!__pyx_v_is_super) { +                if (!(__pyx_v_is_super != 0)) {                    __pyx_t_12 = (((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_super_frequent_patterns->__pyx_vtab)->_contains(__pyx_v_super_frequent_patterns, (__pyx_v_data->arr + __pyx_v_i3), __pyx_v_l3) != NULL);                    __pyx_t_20 = __pyx_t_12;                  } else { -                  __pyx_t_20 = __pyx_v_is_super; +                  __pyx_t_20 = (__pyx_v_is_super != 0);                  }                  if (__pyx_t_20) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":367 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":367   *                                         l1+l2+l3+2 <= self.max_length):   *                                     if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:   *                                         node = collocations._insert(data.arr+i1, l1)             # <<<<<<<<<<<<<< @@ -32039,7 +32820,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */                    __pyx_v_node = ((struct __pyx_vtabstruct_3_sa_TrieMap *)__pyx_v_collocations->__pyx_vtab)->_insert(__pyx_v_collocations, (__pyx_v_data->arr + __pyx_v_i1), __pyx_v_l1); -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":368 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":368   *                                     if is_super or super_frequent_patterns._contains(data.arr+i3, l3) != NULL:   *                                         node = collocations._insert(data.arr+i1, l1)   *                                         node = trie_insert(node, -1)             # <<<<<<<<<<<<<< @@ -32048,7 +32829,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */                    __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1); -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":369 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":369   *                                         node = collocations._insert(data.arr+i1, l1)   *                                         node = trie_insert(node, -1)   *                                         for i from i2 <= i < i2+l2:             # <<<<<<<<<<<<<< @@ -32058,7 +32839,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                    __pyx_t_14 = (__pyx_v_i2 + __pyx_v_l2);                    for (__pyx_v_i = __pyx_v_i2; __pyx_v_i < __pyx_t_14; __pyx_v_i++) { -                    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":370 +                    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":370   *                                         node = trie_insert(node, -1)   *                                         for i from i2 <= i < i2+l2:   *                                             node = trie_insert(node, data.arr[i])             # <<<<<<<<<<<<<< @@ -32068,7 +32849,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                      __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));                    } -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":371 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":371   *                                         for i from i2 <= i < i2+l2:   *                                             node = trie_insert(node, data.arr[i])   *                                         node = trie_insert(node, -1)             # <<<<<<<<<<<<<< @@ -32077,7 +32858,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */                    __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, -1); -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":372 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":372   *                                             node = trie_insert(node, data.arr[i])   *                                         node = trie_insert(node, -1)   *                                         for i from i3 <= i < i3+l3:             # <<<<<<<<<<<<<< @@ -32087,7 +32868,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                    __pyx_t_14 = (__pyx_v_i3 + __pyx_v_l3);                    for (__pyx_v_i = __pyx_v_i3; __pyx_v_i < __pyx_t_14; __pyx_v_i++) { -                    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":373 +                    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":373   *                                         node = trie_insert(node, -1)   *                                         for i from i3 <= i < i3+l3:   *                                             node = trie_insert(node, data.arr[i])             # <<<<<<<<<<<<<< @@ -32097,7 +32878,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                      __pyx_v_node = __pyx_f_3_sa_trie_insert(__pyx_v_node, (__pyx_v_data->arr[__pyx_v_i]));                    } -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":374 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":374   *                                         for i from i3 <= i < i3+l3:   *                                             node = trie_insert(node, data.arr[i])   *                                         trie_node_data_append(node, i1)             # <<<<<<<<<<<<<< @@ -32108,7 +32889,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                    __Pyx_GOTREF(__pyx_t_1);                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":375 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":375   *                                             node = trie_insert(node, data.arr[i])   *                                         trie_node_data_append(node, i1)   *                                         trie_node_data_append(node, i2)             # <<<<<<<<<<<<<< @@ -32119,7 +32900,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                    __Pyx_GOTREF(__pyx_t_1);                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":376 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":376   *                                         trie_node_data_append(node, i1)   *                                         trie_node_data_append(node, i2)   *                                         trie_node_data_append(node, i3)             # <<<<<<<<<<<<<< @@ -32136,7 +32917,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s                }                __pyx_L29:; -              /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":377 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":377   *                                         trie_node_data_append(node, i2)   *                                         trie_node_data_append(node, i3)   *                                 ptr3 = ptr3 + 2             # <<<<<<<<<<<<<< @@ -32153,7 +32934,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          }          __pyx_L21:; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":378 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":378   *                                         trie_node_data_append(node, i3)   *                                 ptr3 = ptr3 + 2   *                     ptr2 = ptr2 + 2             # <<<<<<<<<<<<<< @@ -32164,7 +32945,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        }        __pyx_L19_break:; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":379 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":379   *                                 ptr3 = ptr3 + 2   *                     ptr2 = ptr2 + 2   *                 ptr1 = ptr1 + 2             # <<<<<<<<<<<<<< @@ -32176,7 +32957,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":381 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":381   *                 ptr1 = ptr1 + 2   *             else:   *                 sent_count = sent_count + 1             # <<<<<<<<<<<<<< @@ -32185,35 +32966,35 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_v_sent_count = (__pyx_v_sent_count + 1); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":382 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":382   *             else:   *                 sent_count = sent_count + 1   *                 if sent_count % 10000 == 0:             # <<<<<<<<<<<<<<   *                     logger.debug("        %d sentences", sent_count)   *                 ptr1 = ptr1 + 1   */ -      __pyx_t_20 = (__Pyx_mod_long(__pyx_v_sent_count, 10000) == 0); +      __pyx_t_20 = ((__Pyx_mod_long(__pyx_v_sent_count, 10000) == 0) != 0);        if (__pyx_t_20) { -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":383 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":383   *                 sent_count = sent_count + 1   *                 if sent_count % 10000 == 0:   *                     logger.debug("        %d sentences", sent_count)             # <<<<<<<<<<<<<<   *                 ptr1 = ptr1 + 1   *    */ -        __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;          __pyx_t_1 = PyInt_FromLong(__pyx_v_sent_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1);          __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); -        __Pyx_INCREF(((PyObject *)__pyx_kp_s_78)); -        PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_78)); -        __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_78)); +        __Pyx_INCREF(((PyObject *)__pyx_kp_s_80)); +        PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_80)); +        __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_80));          PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);          __Pyx_GIVEREF(__pyx_t_1);          __pyx_t_1 = 0; @@ -32226,7 +33007,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        }        __pyx_L35:; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":384 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":384   *                 if sent_count % 10000 == 0:   *                     logger.debug("        %d sentences", sent_count)   *                 ptr1 = ptr1 + 1             # <<<<<<<<<<<<<< @@ -32238,14 +33019,14 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_L17:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":386 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":386   *                 ptr1 = ptr1 + 1   *    *         self.precomputed_collocations = collocations.toMap(False)             # <<<<<<<<<<<<<<   *         self.precomputed_index = frequent_patterns.toMap(True)   *    */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_collocations), __pyx_n_s__toMap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_collocations), __pyx_n_s__toMap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_9 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); @@ -32264,14 +33045,14 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_self->precomputed_collocations = __pyx_t_9;    __pyx_t_9 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":387 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":387   *    *         self.precomputed_collocations = collocations.toMap(False)   *         self.precomputed_index = frequent_patterns.toMap(True)             # <<<<<<<<<<<<<<   *    *         x = 0   */ -  __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__toMap); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_frequent_patterns), __pyx_n_s__toMap); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9);    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -32290,7 +33071,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_self->precomputed_index = __pyx_t_3;    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":389 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":389   *         self.precomputed_index = frequent_patterns.toMap(True)   *    *         x = 0             # <<<<<<<<<<<<<< @@ -32300,7 +33081,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __Pyx_INCREF(__pyx_int_0);    __pyx_v_x = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":390 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":390   *    *         x = 0   *         for pattern1 in J_set:             # <<<<<<<<<<<<<< @@ -32326,7 +33107,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_v_pattern1 = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":391 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":391   *         x = 0   *         for pattern1 in J_set:   *             for pattern2 in J_set:             # <<<<<<<<<<<<<< @@ -32352,7 +33133,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_v_pattern2 = __pyx_t_9;        __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":392 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":392   *         for pattern1 in J_set:   *             for pattern2 in J_set:   *                 if len(pattern1) + len(pattern2) + 1 < self.max_length:             # <<<<<<<<<<<<<< @@ -32361,17 +33142,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_t_2 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_15 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_20 = (((__pyx_t_2 + __pyx_t_15) + 1) < __pyx_v_self->max_length); +      __pyx_t_20 = ((((__pyx_t_2 + __pyx_t_15) + 1) < __pyx_v_self->max_length) != 0);        if (__pyx_t_20) { -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":393 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":393   *             for pattern2 in J_set:   *                 if len(pattern1) + len(pattern2) + 1 < self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     J2_set.add(combined_pattern)   *    */ -        __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_79)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_81)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9);          __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_v_pattern2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); @@ -32380,7 +33161,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          __pyx_v_combined_pattern = __pyx_t_8;          __pyx_t_8 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":394 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":394   *                 if len(pattern1) + len(pattern2) + 1 < self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2   *                     J2_set.add(combined_pattern)             # <<<<<<<<<<<<<< @@ -32396,7 +33177,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":396 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":396   *                     J2_set.add(combined_pattern)   *    *         for pattern1 in I_set:             # <<<<<<<<<<<<<< @@ -32422,7 +33203,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_v_pattern1 = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":397 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":397   *    *         for pattern1 in I_set:   *             for pattern2 in I_set:             # <<<<<<<<<<<<<< @@ -32448,7 +33229,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_v_pattern2 = __pyx_t_8;        __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":398 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":398   *         for pattern1 in I_set:   *             for pattern2 in I_set:   *                 x = x+1             # <<<<<<<<<<<<<< @@ -32461,7 +33242,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_v_x = __pyx_t_8;        __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":399 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":399   *             for pattern2 in I_set:   *                 x = x+1   *                 if len(pattern1) + len(pattern2) + 1 <= self.max_length:             # <<<<<<<<<<<<<< @@ -32470,17 +33251,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_t_15 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_2 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_20 = (((__pyx_t_15 + __pyx_t_2) + 1) <= __pyx_v_self->max_length); +      __pyx_t_20 = ((((__pyx_t_15 + __pyx_t_2) + 1) <= __pyx_v_self->max_length) != 0);        if (__pyx_t_20) { -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":400 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":400   *                 x = x+1   *                 if len(pattern1) + len(pattern2) + 1 <= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *    */ -        __pyx_t_8 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_80)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_82)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8);          __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_v_pattern2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); @@ -32489,7 +33270,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          __pyx_v_combined_pattern = __pyx_t_9;          __pyx_t_9 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":401 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":401   *                 if len(pattern1) + len(pattern2) + 1 <= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2   *                     IJ_set.add(combined_pattern)             # <<<<<<<<<<<<<< @@ -32505,7 +33286,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":403 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":403   *                     IJ_set.add(combined_pattern)   *    *         for pattern1 in I_set:             # <<<<<<<<<<<<<< @@ -32531,7 +33312,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_v_pattern1 = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":404 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":404   *    *         for pattern1 in I_set:   *             for pattern2 in J2_set:             # <<<<<<<<<<<<<< @@ -32557,7 +33338,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_v_pattern2 = __pyx_t_9;        __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":405 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":405   *         for pattern1 in I_set:   *             for pattern2 in J2_set:   *                 x = x+2             # <<<<<<<<<<<<<< @@ -32570,7 +33351,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __pyx_v_x = __pyx_t_9;        __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":406 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":406   *             for pattern2 in J2_set:   *                 x = x+2   *                 if len(pattern1) + len(pattern2) + 1<= self.max_length:             # <<<<<<<<<<<<<< @@ -32579,17 +33360,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_t_2 = PyObject_Length(__pyx_v_pattern1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_15 = PyObject_Length(__pyx_v_pattern2); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_20 = (((__pyx_t_2 + __pyx_t_15) + 1) <= __pyx_v_self->max_length); +      __pyx_t_20 = ((((__pyx_t_2 + __pyx_t_15) + 1) <= __pyx_v_self->max_length) != 0);        if (__pyx_t_20) { -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":407 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":407   *                 x = x+2   *                 if len(pattern1) + len(pattern2) + 1<= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *                     combined_pattern = pattern2 + (-1,) + pattern1   */ -        __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_81)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = PyNumber_Add(__pyx_v_pattern1, ((PyObject *)__pyx_k_tuple_83)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9);          __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_v_pattern2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); @@ -32598,7 +33379,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          __pyx_v_combined_pattern = __pyx_t_8;          __pyx_t_8 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":408 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":408   *                 if len(pattern1) + len(pattern2) + 1<= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2   *                     IJ_set.add(combined_pattern)             # <<<<<<<<<<<<<< @@ -32607,14 +33388,14 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */          __pyx_t_16 = PySet_Add(__pyx_v_IJ_set, __pyx_v_combined_pattern); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":409 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":409   *                     combined_pattern = pattern1 + (-1,) + pattern2   *                     IJ_set.add(combined_pattern)   *                     combined_pattern = pattern2 + (-1,) + pattern1             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *    */ -        __pyx_t_8 = PyNumber_Add(__pyx_v_pattern2, ((PyObject *)__pyx_k_tuple_82)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PyNumber_Add(__pyx_v_pattern2, ((PyObject *)__pyx_k_tuple_84)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8);          __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_v_pattern1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_9); @@ -32623,7 +33404,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s          __pyx_v_combined_pattern = __pyx_t_9;          __pyx_t_9 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":410 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":410   *                     IJ_set.add(combined_pattern)   *                     combined_pattern = pattern2 + (-1,) + pattern1   *                     IJ_set.add(combined_pattern)             # <<<<<<<<<<<<<< @@ -32639,17 +33420,17 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":412 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":412   *                     IJ_set.add(combined_pattern)   *    *         N = len(pattern_rank)             # <<<<<<<<<<<<<<   *         cost_by_rank = IntList(initial_len=N)   *         count_by_rank = IntList(initial_len=N)   */ -  __pyx_t_15 = PyDict_Size(((PyObject *)__pyx_v_pattern_rank));  +  __pyx_t_15 = PyDict_Size(((PyObject *)__pyx_v_pattern_rank)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_N = __pyx_t_15; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":413 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":413   *    *         N = len(pattern_rank)   *         cost_by_rank = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -32668,7 +33449,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_cost_by_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":414 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":414   *         N = len(pattern_rank)   *         cost_by_rank = IntList(initial_len=N)   *         count_by_rank = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -32687,116 +33468,59 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_v_count_by_rank = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":415 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":415   *         cost_by_rank = IntList(initial_len=N)   *         count_by_rank = IntList(initial_len=N)   *         for pattern, arr in self.precomputed_collocations.iteritems():             # <<<<<<<<<<<<<<   *             if pattern not in IJ_set:   *                 s = ""   */ -  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self->precomputed_collocations, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __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[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { -    __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_15 = 0; -    __pyx_t_5 = NULL; -  } else { -    __pyx_t_15 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; +  __pyx_t_15 = 0; +  if (unlikely(__pyx_v_self->precomputed_collocations == Py_None)) { +    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +    {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  for (;;) { -    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) { -      if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; -    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) { -      if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; -    } else { -      __pyx_t_1 = __pyx_t_5(__pyx_t_3); -      if (unlikely(!__pyx_t_1)) { -        if (PyErr_Occurred()) { -          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        break; -      } -      __Pyx_GOTREF(__pyx_t_1); -    } -    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { -      PyObject* sequence = __pyx_t_1; -      if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);  -        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);  -      } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_9 = PyList_GET_ITEM(sequence, 0);  -        __pyx_t_8 = PyList_GET_ITEM(sequence, 1);  -      } -      __Pyx_INCREF(__pyx_t_9); -      __Pyx_INCREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    } else { -      Py_ssize_t index = -1; -      __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_6); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; -      index = 0; __pyx_t_9 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L53_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_9); -      index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_8)) goto __pyx_L53_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_8); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      goto __pyx_L54_unpacking_done; -      __pyx_L53_unpacking_failed:; -      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_L54_unpacking_done:; -    } +  __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_self->precomputed_collocations, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_2), (&__pyx_t_14)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_1); +  __Pyx_XDECREF(__pyx_t_3); +  __pyx_t_3 = __pyx_t_1; +  __pyx_t_1 = 0; +  while (1) { +    __pyx_t_17 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_2, &__pyx_t_15, &__pyx_t_1, &__pyx_t_9, NULL, __pyx_t_14); +    if (unlikely(__pyx_t_17 == 0)) break; +    if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __Pyx_GOTREF(__pyx_t_9);      __Pyx_XDECREF(__pyx_v_pattern); -    __pyx_v_pattern = __pyx_t_9; -    __pyx_t_9 = 0; +    __pyx_v_pattern = __pyx_t_1; +    __pyx_t_1 = 0;      __Pyx_XDECREF(__pyx_v_arr); -    __pyx_v_arr = __pyx_t_8; -    __pyx_t_8 = 0; +    __pyx_v_arr = __pyx_t_9; +    __pyx_t_9 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":416 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":416   *         count_by_rank = IntList(initial_len=N)   *         for pattern, arr in self.precomputed_collocations.iteritems():   *             if pattern not in IJ_set:             # <<<<<<<<<<<<<<   *                 s = ""   *                 for word_id in pattern:   */ -    __pyx_t_20 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_IJ_set), __pyx_v_pattern))); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (__pyx_t_20) { +    __pyx_t_20 = (__Pyx_PySequence_Contains(__pyx_v_pattern, ((PyObject *)__pyx_v_IJ_set), Py_NE)); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = (__pyx_t_20 != 0); +    if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":417 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":417   *         for pattern, arr in self.precomputed_collocations.iteritems():   *             if pattern not in IJ_set:   *                 s = ""             # <<<<<<<<<<<<<<   *                 for word_id in pattern:   *                     if word_id == -1:   */ -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_45)); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_47));        __Pyx_XDECREF(__pyx_v_s); -      __pyx_v_s = ((PyObject *)__pyx_kp_s_45); +      __pyx_v_s = ((PyObject *)__pyx_kp_s_47); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":418 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":418   *             if pattern not in IJ_set:   *                 s = ""   *                 for word_id in pattern:             # <<<<<<<<<<<<<< @@ -32804,117 +33528,124 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   *                         s = s + "X "   */        if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) { -        __pyx_t_1 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; -        __pyx_t_21 = NULL; +        __pyx_t_9 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_9); __pyx_t_13 = 0; +        __pyx_t_5 = NULL;        } else { -        __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext; +        __pyx_t_13 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_9); +        __pyx_t_5 = Py_TYPE(__pyx_t_9)->tp_iternext;        }        for (;;) { -        if (!__pyx_t_21 && PyList_CheckExact(__pyx_t_1)) { -          if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; -        } else if (!__pyx_t_21 && PyTuple_CheckExact(__pyx_t_1)) { -          if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; +        if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_9)) { +          if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_9)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif +        } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_9)) { +          if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_9)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else { -          __pyx_t_8 = __pyx_t_21(__pyx_t_1); -          if (unlikely(!__pyx_t_8)) { +          __pyx_t_1 = __pyx_t_5(__pyx_t_9); +          if (unlikely(!__pyx_t_1)) {              if (PyErr_Occurred()) {                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();                else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              }              break;            } -          __Pyx_GOTREF(__pyx_t_8); +          __Pyx_GOTREF(__pyx_t_1);          }          __Pyx_XDECREF(__pyx_v_word_id); -        __pyx_v_word_id = __pyx_t_8; -        __pyx_t_8 = 0; +        __pyx_v_word_id = __pyx_t_1; +        __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":419 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":419   *                 s = ""   *                 for word_id in pattern:   *                     if word_id == -1:             # <<<<<<<<<<<<<<   *                         s = s + "X "   *                     else:   */ -        __pyx_t_8 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -        if (__pyx_t_20) { +        __pyx_t_1 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        if (__pyx_t_12) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":420 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":420   *                 for word_id in pattern:   *                     if word_id == -1:   *                         s = s + "X "             # <<<<<<<<<<<<<<   *                     else:   *                         s = s + darray.id2word[word_id] + " "   */ -          __pyx_t_8 = PyNumber_Add(__pyx_v_s, ((PyObject *)__pyx_kp_s_83)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); +          __pyx_t_1 = PyNumber_Add(__pyx_v_s, ((PyObject *)__pyx_kp_s_85)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_v_s); -          __pyx_v_s = __pyx_t_8; -          __pyx_t_8 = 0; -          goto __pyx_L58; +          __pyx_v_s = __pyx_t_1; +          __pyx_t_1 = 0; +          goto __pyx_L56;          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":422 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":422   *                         s = s + "X "   *                     else:   *                         s = s + darray.id2word[word_id] + " "             # <<<<<<<<<<<<<<   *                 logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)   *             else:   */ -          __pyx_t_8 = PyObject_GetItem(__pyx_v_darray->id2word, __pyx_v_word_id); if (!__pyx_t_8) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_1 = PyObject_GetItem(__pyx_v_darray->id2word, __pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_1); +          __pyx_t_8 = PyNumber_Add(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_8); -          __pyx_t_9 = PyNumber_Add(__pyx_v_s, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_9); +          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +          __pyx_t_1 = PyNumber_Add(__pyx_t_8, ((PyObject *)__pyx_kp_s_69)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          __pyx_t_8 = PyNumber_Add(__pyx_t_9, ((PyObject *)__pyx_kp_s_67)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;            __Pyx_DECREF(__pyx_v_s); -          __pyx_v_s = __pyx_t_8; -          __pyx_t_8 = 0; +          __pyx_v_s = __pyx_t_1; +          __pyx_t_1 = 0;          } -        __pyx_L58:; +        __pyx_L56:;        } -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":423 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":423   *                     else:   *                         s = s + darray.id2word[word_id] + " "   *                 logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)             # <<<<<<<<<<<<<<   *             else:   *                 chunk = ()   */ -      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__warn); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_9); +      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s__warn); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_84)); -      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_84)); -      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_84)); +      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_9); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_86)); +      PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_86)); +      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_86));        __Pyx_INCREF(__pyx_v_s); -      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_s); +      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_s);        __Pyx_GIVEREF(__pyx_v_s); -      __pyx_t_9 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); +      __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      goto __pyx_L55; +      goto __pyx_L53;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":425 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":425   *                 logger.warn("ERROR: unexpected pattern %s in set of precomputed collocations", s)   *             else:   *                 chunk = ()             # <<<<<<<<<<<<<< @@ -32925,7 +33656,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __Pyx_XDECREF(((PyObject *)__pyx_v_chunk));        __pyx_v_chunk = __pyx_empty_tuple; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":426 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":426   *             else:   *                 chunk = ()   *                 max_rank = 0             # <<<<<<<<<<<<<< @@ -32934,7 +33665,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   */        __pyx_v_max_rank = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":427 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":427   *                 chunk = ()   *                 max_rank = 0   *                 arity = 0             # <<<<<<<<<<<<<< @@ -32945,7 +33676,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s        __Pyx_XDECREF(__pyx_v_arity);        __pyx_v_arity = __pyx_int_0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":428 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":428   *                 max_rank = 0   *                 arity = 0   *                 for word_id in pattern:             # <<<<<<<<<<<<<< @@ -32953,93 +33684,99 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s   *                         max_rank = max(max_rank, pattern_rank[chunk])   */        if (PyList_CheckExact(__pyx_v_pattern) || PyTuple_CheckExact(__pyx_v_pattern)) { -        __pyx_t_9 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_9); __pyx_t_2 = 0; -        __pyx_t_21 = NULL; +        __pyx_t_8 = __pyx_v_pattern; __Pyx_INCREF(__pyx_t_8); __pyx_t_13 = 0; +        __pyx_t_5 = NULL;        } else { -        __pyx_t_2 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_9); -        __pyx_t_21 = Py_TYPE(__pyx_t_9)->tp_iternext; +        __pyx_t_13 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_pattern); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_5 = Py_TYPE(__pyx_t_8)->tp_iternext;        }        for (;;) { -        if (!__pyx_t_21 && PyList_CheckExact(__pyx_t_9)) { -          if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_9)) break; -          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; -        } else if (!__pyx_t_21 && PyTuple_CheckExact(__pyx_t_9)) { -          if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_9)) break; -          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; +        if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_8)) { +          if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_8)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_9 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif +        } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_8)) { +          if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_8)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else { -          __pyx_t_1 = __pyx_t_21(__pyx_t_9); -          if (unlikely(!__pyx_t_1)) { +          __pyx_t_9 = __pyx_t_5(__pyx_t_8); +          if (unlikely(!__pyx_t_9)) {              if (PyErr_Occurred()) {                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();                else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              }              break;            } -          __Pyx_GOTREF(__pyx_t_1); +          __Pyx_GOTREF(__pyx_t_9);          }          __Pyx_XDECREF(__pyx_v_word_id); -        __pyx_v_word_id = __pyx_t_1; -        __pyx_t_1 = 0; +        __pyx_v_word_id = __pyx_t_9; +        __pyx_t_9 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":429 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":429   *                 arity = 0   *                 for word_id in pattern:   *                     if word_id == -1:             # <<<<<<<<<<<<<<   *                         max_rank = max(max_rank, pattern_rank[chunk])   *                         arity = arity + 1   */ -        __pyx_t_1 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        if (__pyx_t_20) { +        __pyx_t_9 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        if (__pyx_t_12) { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":430 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":430   *                 for word_id in pattern:   *                     if word_id == -1:   *                         max_rank = max(max_rank, pattern_rank[chunk])             # <<<<<<<<<<<<<<   *                         arity = arity + 1   *                         chunk = ()   */ -          __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_1); -          __pyx_t_14 = __pyx_v_max_rank; -          __pyx_t_6 = PyInt_FromLong(__pyx_t_14); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_9) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_9); +          __pyx_t_17 = __pyx_v_max_rank; +          __pyx_t_6 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_6); -          __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_7); +          __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -          __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -          if (__pyx_t_20) { -            __Pyx_INCREF(__pyx_t_1); -            __pyx_t_8 = __pyx_t_1; +          if (__pyx_t_12) { +            __Pyx_INCREF(__pyx_t_9); +            __pyx_t_1 = __pyx_t_9;            } else { -            __pyx_t_7 = PyInt_FromLong(__pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_7 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_7); -            __pyx_t_8 = __pyx_t_7; +            __pyx_t_1 = __pyx_t_7;              __pyx_t_7 = 0;            } +          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +          __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          __pyx_t_14 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          __pyx_v_max_rank = __pyx_t_14; +          __pyx_v_max_rank = __pyx_t_17; -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":431 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":431   *                     if word_id == -1:   *                         max_rank = max(max_rank, pattern_rank[chunk])   *                         arity = arity + 1             # <<<<<<<<<<<<<<   *                         chunk = ()   *                     else:   */ -          __pyx_t_8 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); +          __pyx_t_1 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_1);            __Pyx_DECREF(__pyx_v_arity); -          __pyx_v_arity = __pyx_t_8; -          __pyx_t_8 = 0; +          __pyx_v_arity = __pyx_t_1; +          __pyx_t_1 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":432 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":432   *                         max_rank = max(max_rank, pattern_rank[chunk])   *                         arity = arity + 1   *                         chunk = ()             # <<<<<<<<<<<<<< @@ -33049,105 +33786,104 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s            __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));            __Pyx_DECREF(((PyObject *)__pyx_v_chunk));            __pyx_v_chunk = __pyx_empty_tuple; -          goto __pyx_L61; +          goto __pyx_L59;          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":434 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":434   *                         chunk = ()   *                     else:   *                         chunk = chunk + (word_id,)             # <<<<<<<<<<<<<<   *                 max_rank = max(max_rank, pattern_rank[chunk])   *                 cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))   */ -          __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); +          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_1);            __Pyx_INCREF(__pyx_v_word_id); -          PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_word_id); +          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_word_id);            __Pyx_GIVEREF(__pyx_v_word_id); -          __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_chunk), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -          __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +          __pyx_t_9 = PyNumber_Add(((PyObject *)__pyx_v_chunk), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(((PyObject *)__pyx_t_9)); +          __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;            __Pyx_DECREF(((PyObject *)__pyx_v_chunk)); -          __pyx_v_chunk = __pyx_t_1; -          __pyx_t_1 = 0; +          __pyx_v_chunk = ((PyObject*)__pyx_t_9); +          __pyx_t_9 = 0;          } -        __pyx_L61:; +        __pyx_L59:;        } -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":435 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":435   *                     else:   *                         chunk = chunk + (word_id,)   *                 max_rank = max(max_rank, pattern_rank[chunk])             # <<<<<<<<<<<<<<   *                 cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))   *                 count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))   */ -      __pyx_t_9 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_9) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_14 = __pyx_v_max_rank; -      __pyx_t_8 = PyInt_FromLong(__pyx_t_14); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_pattern_rank), ((PyObject *)__pyx_v_chunk)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_7); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_17 = __pyx_v_max_rank; +      __pyx_t_1 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (__pyx_t_20) { -        __Pyx_INCREF(__pyx_t_9); -        __pyx_t_1 = __pyx_t_9; +      if (__pyx_t_12) { +        __Pyx_INCREF(__pyx_t_8); +        __pyx_t_9 = __pyx_t_8;        } else { -        __pyx_t_7 = PyInt_FromLong(__pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = PyInt_FromLong(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7); -        __pyx_t_1 = __pyx_t_7; +        __pyx_t_9 = __pyx_t_7;          __pyx_t_7 = 0;        } +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_14 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_v_max_rank = __pyx_t_14; +      __pyx_v_max_rank = __pyx_t_17; -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":436 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":436   *                         chunk = chunk + (word_id,)   *                 max_rank = max(max_rank, pattern_rank[chunk])   *                 cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))             # <<<<<<<<<<<<<<   *                 count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))   *    */ -      __pyx_t_2 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      (__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) = ((__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) + (4 * __pyx_t_2)); +      __pyx_t_13 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 436; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      (__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) = ((__pyx_v_cost_by_rank->arr[__pyx_v_max_rank]) + (4 * __pyx_t_13)); -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":437 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":437   *                 max_rank = max(max_rank, pattern_rank[chunk])   *                 cost_by_rank.arr[max_rank] = cost_by_rank.arr[max_rank] + (4*len(arr))   *                 count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))             # <<<<<<<<<<<<<<   *    *         cumul_cost = 0   */ -      __pyx_t_1 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_max_rank])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_max_rank])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); +      __pyx_t_13 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8);        __pyx_t_7 = PyNumber_Add(__pyx_v_arity, __pyx_int_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +      __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      __pyx_t_7 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyNumber_Add(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); +      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_14 = __Pyx_PyInt_AsInt(__pyx_t_7); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_17 = __Pyx_PyInt_AsInt(__pyx_t_7); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      (__pyx_v_count_by_rank->arr[__pyx_v_max_rank]) = __pyx_t_14; +      (__pyx_v_count_by_rank->arr[__pyx_v_max_rank]) = __pyx_t_17;      } -    __pyx_L55:; +    __pyx_L53:;    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":439 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":439   *                 count_by_rank.arr[max_rank] = count_by_rank.arr[max_rank] + (len(arr)/(arity+1))   *    *         cumul_cost = 0             # <<<<<<<<<<<<<< @@ -33157,7 +33893,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __Pyx_INCREF(__pyx_int_0);    __pyx_v_cumul_cost = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":440 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":440   *    *         cumul_cost = 0   *         cumul_count = 0             # <<<<<<<<<<<<<< @@ -33167,7 +33903,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __Pyx_INCREF(__pyx_int_0);    __pyx_v_cumul_count = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":441 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":441   *         cumul_cost = 0   *         cumul_count = 0   *         for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -33177,7 +33913,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s    __pyx_t_14 = __pyx_v_N;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":442 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":442   *         cumul_count = 0   *         for i from 0 <= i < N:   *             cumul_cost = cumul_cost + cost_by_rank.arr[i]             # <<<<<<<<<<<<<< @@ -33193,7 +33929,7 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_v_cumul_cost = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":443 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":443   *         for i from 0 <= i < N:   *             cumul_cost = cumul_cost + cost_by_rank.arr[i]   *             cumul_count = cumul_count + count_by_rank.arr[i]             # <<<<<<<<<<<<<< @@ -33209,230 +33945,231 @@ static PyObject *__pyx_pf_3_sa_14Precomputation_6precompute(struct __pyx_obj_3_s      __pyx_v_cumul_count = __pyx_t_3;      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":444 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":444   *             cumul_cost = cumul_cost + cost_by_rank.arr[i]   *             cumul_count = cumul_count + count_by_rank.arr[i]   *             logger.debug("RANK %d\tCOUNT, COST: %d    %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)             # <<<<<<<<<<<<<<   *    *         num_found_patterns = len(self.precomputed_collocations)   */ -    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_7 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__debug); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__debug); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __pyx_t_3 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_8 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_1 = PyInt_FromLong((__pyx_v_cost_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyInt_FromLong((__pyx_v_count_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = PyInt_FromLong((__pyx_v_cost_by_rank->arr[__pyx_v_i])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_9); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_85)); -    PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_85)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_85)); -    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3); +    __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_87)); +    PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_87)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_87)); +    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);      __Pyx_GIVEREF(__pyx_t_3); -    PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8); -    __Pyx_GIVEREF(__pyx_t_8); -    PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_1); +    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);      __Pyx_GIVEREF(__pyx_t_1); +    PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_9); +    __Pyx_GIVEREF(__pyx_t_9);      __Pyx_INCREF(__pyx_v_cumul_count); -    PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_cumul_count); +    PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_cumul_count);      __Pyx_GIVEREF(__pyx_v_cumul_count);      __Pyx_INCREF(__pyx_v_cumul_cost); -    PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_v_cumul_cost); +    PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_cumul_cost);      __Pyx_GIVEREF(__pyx_v_cumul_cost);      __pyx_t_3 = 0; -    __pyx_t_8 = 0;      __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_9 = 0; +    __pyx_t_9 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_9);      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":446 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":446   *             logger.debug("RANK %d\tCOUNT, COST: %d    %d\tCUMUL: %d, %d", i, count_by_rank.arr[i], cost_by_rank.arr[i], cumul_count, cumul_cost)   *    *         num_found_patterns = len(self.precomputed_collocations)             # <<<<<<<<<<<<<<   *         for pattern in IJ_set:   *             if pattern not in self.precomputed_collocations:   */ -  __pyx_t_1 = __pyx_v_self->precomputed_collocations; -  __Pyx_INCREF(__pyx_t_1); -  __pyx_t_15 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_num_found_patterns = __pyx_t_1; -  __pyx_t_1 = 0; +  __pyx_t_9 = __pyx_v_self->precomputed_collocations; +  __Pyx_INCREF(__pyx_t_9); +  __pyx_t_2 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +  __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_9); +  __pyx_v_num_found_patterns = __pyx_t_9; +  __pyx_t_9 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":447 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":447   *    *         num_found_patterns = len(self.precomputed_collocations)   *         for pattern in IJ_set:             # <<<<<<<<<<<<<<   *             if pattern not in self.precomputed_collocations:   *                 self.precomputed_collocations[pattern] = IntList()   */ -  __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_IJ_set)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; +  __pyx_t_9 = PyObject_GetIter(((PyObject *)__pyx_v_IJ_set)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_9); +  __pyx_t_5 = Py_TYPE(__pyx_t_9)->tp_iternext;    for (;;) {      { -      __pyx_t_9 = __pyx_t_5(__pyx_t_1); -      if (unlikely(!__pyx_t_9)) { +      __pyx_t_8 = __pyx_t_5(__pyx_t_9); +      if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();            else {__pyx_filename = __pyx_f[11]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } -      __Pyx_GOTREF(__pyx_t_9); +      __Pyx_GOTREF(__pyx_t_8);      }      __Pyx_XDECREF(__pyx_v_pattern); -    __pyx_v_pattern = __pyx_t_9; -    __pyx_t_9 = 0; +    __pyx_v_pattern = __pyx_t_8; +    __pyx_t_8 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":448 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":448   *         num_found_patterns = len(self.precomputed_collocations)   *         for pattern in IJ_set:   *             if pattern not in self.precomputed_collocations:             # <<<<<<<<<<<<<<   *                 self.precomputed_collocations[pattern] = IntList()   *    */ -    __pyx_t_20 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_self->precomputed_collocations, __pyx_v_pattern))); if (unlikely(__pyx_t_20 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = (__Pyx_PySequence_Contains(__pyx_v_pattern, __pyx_v_self->precomputed_collocations, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_20 = (__pyx_t_12 != 0);      if (__pyx_t_20) { -      /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":449 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":449   *         for pattern in IJ_set:   *             if pattern not in self.precomputed_collocations:   *                 self.precomputed_collocations[pattern] = IntList()             # <<<<<<<<<<<<<<   *    *         cdef float stop_time = monitor_cpu()   */ -      __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      if (PyObject_SetItem(__pyx_v_self->precomputed_collocations, __pyx_v_pattern, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      goto __pyx_L66; +      __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      if (PyObject_SetItem(__pyx_v_self->precomputed_collocations, __pyx_v_pattern, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      goto __pyx_L64;      } -    __pyx_L66:; +    __pyx_L64:;    } -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":451 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":451   *                 self.precomputed_collocations[pattern] = IntList()   *    *         cdef float stop_time = monitor_cpu()             # <<<<<<<<<<<<<<   *         logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)   *         logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +  __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_8); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __pyx_v_stop_time = __pyx_t_4; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":452 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":452   *    *         cdef float stop_time = monitor_cpu()   *         logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)             # <<<<<<<<<<<<<<   *         logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))   *         logger.info("Precomputation took %f seconds", (stop_time - start_time))   */ -  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_t_9 = __pyx_v_self->precomputed_collocations; -  __Pyx_INCREF(__pyx_t_9); -  __pyx_t_15 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = __pyx_v_self->precomputed_collocations; +  __Pyx_INCREF(__pyx_t_8); +  __pyx_t_2 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_86)); -  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_86)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_86)); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_88)); +  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_88)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_88));    __Pyx_INCREF(__pyx_v_num_found_patterns);    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_num_found_patterns);    __Pyx_GIVEREF(__pyx_v_num_found_patterns); -  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_9); -  __Pyx_GIVEREF(__pyx_t_9); +  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_8); +  __Pyx_GIVEREF(__pyx_t_8);    __Pyx_INCREF(__pyx_v_x);    PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_x);    __Pyx_GIVEREF(__pyx_v_x); -  __pyx_t_9 = 0; -  __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; +  __pyx_t_8 = 0; +  __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":453 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":453   *         cdef float stop_time = monitor_cpu()   *         logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)   *         logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))             # <<<<<<<<<<<<<<   *         logger.info("Precomputation took %f seconds", (stop_time - start_time))   */ -  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __pyx_t_7 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7); -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_t_9 = __pyx_v_self->precomputed_index; -  __Pyx_INCREF(__pyx_t_9); -  __pyx_t_15 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_87)); -  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_87)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_87)); -  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9); -  __Pyx_GIVEREF(__pyx_t_9); -  __pyx_t_9 = 0; -  __pyx_t_9 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = __pyx_v_self->precomputed_index; +  __Pyx_INCREF(__pyx_t_8); +  __pyx_t_2 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_89)); +  PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_kp_s_89)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_89)); +  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8); +  __Pyx_GIVEREF(__pyx_t_8); +  __pyx_t_8 = 0; +  __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":454 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":454   *         logger.info("Precomputed collocations for %d patterns out of %d possible (upper bound %d)", num_found_patterns, len(self.precomputed_collocations), x)   *         logger.info("Precomputed inverted index for %d patterns ", len(self.precomputed_index))   *         logger.info("Precomputation took %f seconds", (stop_time - start_time))             # <<<<<<<<<<<<<<   */ -  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __pyx_t_1 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -  __pyx_t_9 = PyFloat_FromDouble((__pyx_v_stop_time - __pyx_v_start_time)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_9); +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = PyFloat_FromDouble((__pyx_v_stop_time - __pyx_v_start_time)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_88)); -  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_88)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_88)); -  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9); -  __Pyx_GIVEREF(__pyx_t_9); -  __pyx_t_9 = 0; -  __pyx_t_9 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_9); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_90)); +  PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_s_90)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_90)); +  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8); +  __Pyx_GIVEREF(__pyx_t_8); +  __pyx_t_8 = 0; +  __pyx_t_8 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None);    goto __pyx_L0; @@ -33487,14 +34224,17 @@ static int __pyx_pw_3_sa_11SuffixArray_1__cinit__(PyObject *__pyx_v_self, PyObje    PyObject *__pyx_v_from_binary = 0;    PyObject *__pyx_v_from_text = 0;    PyObject *__pyx_v_side = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__from_binary,&__pyx_n_s__from_text,&__pyx_n_s__side,0};      PyObject* values[3] = {0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":11 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":11   *     cdef IntList ha   *    *     def __cinit__(self, from_binary=None, from_text=None, side=None):             # <<<<<<<<<<<<<< @@ -33573,7 +34313,7 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":12 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":12   *    *     def __cinit__(self, from_binary=None, from_text=None, side=None):   *         self.darray = DataArray()             # <<<<<<<<<<<<<< @@ -33588,7 +34328,7 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    __pyx_v_self->darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":13 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":13   *     def __cinit__(self, from_binary=None, from_text=None, side=None):   *         self.darray = DataArray()   *         self.sa = IntList()             # <<<<<<<<<<<<<< @@ -33603,7 +34343,7 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":14   *         self.darray = DataArray()   *         self.sa = IntList()   *         self.ha = IntList()             # <<<<<<<<<<<<<< @@ -33618,7 +34358,7 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    __pyx_v_self->ha = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":15   *         self.sa = IntList()   *         self.ha = IntList()   *         if from_binary:             # <<<<<<<<<<<<<< @@ -33628,14 +34368,14 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_binary); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":16 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":16   *         self.ha = IntList()   *         if from_binary:   *             self.read_binary(from_binary)             # <<<<<<<<<<<<<<   *         elif from_text:   *             self.read_text(from_text, side)   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_binary); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 16; __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[12]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -33650,7 +34390,7 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":17   *         if from_binary:   *             self.read_binary(from_binary)   *         elif from_text:             # <<<<<<<<<<<<<< @@ -33660,14 +34400,14 @@ static int __pyx_pf_3_sa_11SuffixArray___cinit__(struct __pyx_obj_3_sa_SuffixArr    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_from_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":18 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":18   *             self.read_binary(from_binary)   *         elif from_text:   *             self.read_text(from_text, side)             # <<<<<<<<<<<<<<   *    *     def __getitem__(self, i):   */ -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__read_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); @@ -33710,7 +34450,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_3__getitem__(PyObject *__pyx_v_self    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":20 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":20   *             self.read_text(from_text, side)   *    *     def __getitem__(self, i):             # <<<<<<<<<<<<<< @@ -33728,7 +34468,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_2__getitem__(struct __pyx_obj_3_sa_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__getitem__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":21   *    *     def __getitem__(self, i):   *         return self.sa.arr[i]             # <<<<<<<<<<<<<< @@ -33761,11 +34501,14 @@ static char __pyx_doc_3_sa_11SuffixArray_4read_text[] = "Constructs suffix array  static PyObject *__pyx_pw_3_sa_11SuffixArray_5read_text(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_filename = 0;    PyObject *__pyx_v_side = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_text (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__side,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -33779,12 +34522,10 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_5read_text(PyObject *__pyx_v_self,        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__side)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("read_text", 1, 2, 2, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -33814,7 +34555,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_5read_text(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":23 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":23   *         return self.sa.arr[i]   *    *     def read_text(self, filename, side):             # <<<<<<<<<<<<<< @@ -33855,7 +34596,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("read_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":29 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":29   *         cdef IntList isa, word_count   *    *         self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)             # <<<<<<<<<<<<<< @@ -33879,7 +34620,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_v_self->darray = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":30   *    *         self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)   *         N = len(self.darray)             # <<<<<<<<<<<<<< @@ -33892,7 +34633,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __pyx_v_N = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":31   *         self.darray = DataArray(from_text=filename, side=side, use_sent_id=True)   *         N = len(self.darray)   *         V = len(self.darray.id2word)             # <<<<<<<<<<<<<< @@ -33905,7 +34646,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __pyx_v_V = __pyx_t_3; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":33   *         V = len(self.darray.id2word)   *    *         self.sa = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -33927,7 +34668,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":34   *    *         self.sa = IntList(initial_len=N)   *         self.ha = IntList(initial_len=V+1)             # <<<<<<<<<<<<<< @@ -33949,7 +34690,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_v_self->ha = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":36 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":36   *         self.ha = IntList(initial_len=V+1)   *    *         isa = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -33968,7 +34709,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_v_isa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":37 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":37   *    *         isa = IntList(initial_len=N)   *         word_count = IntList(initial_len=V+1)             # <<<<<<<<<<<<<< @@ -33987,14 +34728,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_v_word_count = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":40   *    *         '''Step 1: bucket sort data'''   *         cdef float sort_start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *         cdef float start_time = sort_start_time   *         for i from 0 <= i < N:   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 40; __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[12]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); @@ -34003,7 +34744,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_sort_start_time = __pyx_t_4; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":41   *         '''Step 1: bucket sort data'''   *         cdef float sort_start_time = monitor_cpu()   *         cdef float start_time = sort_start_time             # <<<<<<<<<<<<<< @@ -34012,7 +34753,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */    __pyx_v_start_time = __pyx_v_sort_start_time; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":42 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":42   *         cdef float sort_start_time = monitor_cpu()   *         cdef float start_time = sort_start_time   *         for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -34022,7 +34763,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_t_5 = __pyx_v_N;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":43 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":43   *         cdef float start_time = sort_start_time   *         for i from 0 <= i < N:   *             a_i = self.darray.data.arr[i]             # <<<<<<<<<<<<<< @@ -34031,7 +34772,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_a_i = (__pyx_v_self->darray->data->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":44 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":44   *         for i from 0 <= i < N:   *             a_i = self.darray.data.arr[i]   *             word_count.arr[a_i] = word_count.arr[a_i] + 1             # <<<<<<<<<<<<<< @@ -34041,7 +34782,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      (__pyx_v_word_count->arr[__pyx_v_a_i]) = ((__pyx_v_word_count->arr[__pyx_v_a_i]) + 1);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":46 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":46   *             word_count.arr[a_i] = word_count.arr[a_i] + 1   *    *         n = 0             # <<<<<<<<<<<<<< @@ -34050,7 +34791,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */    __pyx_v_n = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":47 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":47   *    *         n = 0   *         for i from 0 <= i < V+1:             # <<<<<<<<<<<<<< @@ -34060,7 +34801,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_t_6 = (__pyx_v_V + 1);    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":48 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":48   *         n = 0   *         for i from 0 <= i < V+1:   *             self.ha.arr[i] = n             # <<<<<<<<<<<<<< @@ -34069,7 +34810,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      (__pyx_v_self->ha->arr[__pyx_v_i]) = __pyx_v_n; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":49 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":49   *         for i from 0 <= i < V+1:   *             self.ha.arr[i] = n   *             n = n + word_count.arr[i]             # <<<<<<<<<<<<<< @@ -34078,7 +34819,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_n = (__pyx_v_n + (__pyx_v_word_count->arr[__pyx_v_i])); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":50 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":50   *             self.ha.arr[i] = n   *             n = n + word_count.arr[i]   *             word_count.arr[i] = 0             # <<<<<<<<<<<<<< @@ -34088,7 +34829,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      (__pyx_v_word_count->arr[__pyx_v_i]) = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":52 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":52   *             word_count.arr[i] = 0   *    *         for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -34098,7 +34839,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_t_5 = __pyx_v_N;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":53 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":53   *    *         for i from 0 <= i < N:   *             a_i = self.darray.data.arr[i]             # <<<<<<<<<<<<<< @@ -34107,7 +34848,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_a_i = (__pyx_v_self->darray->data->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":54 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":54   *         for i from 0 <= i < N:   *             a_i = self.darray.data.arr[i]   *             self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i             # <<<<<<<<<<<<<< @@ -34116,7 +34857,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      (__pyx_v_self->sa->arr[((__pyx_v_self->ha->arr[__pyx_v_a_i]) + (__pyx_v_word_count->arr[__pyx_v_a_i]))]) = __pyx_v_i; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":55 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":55   *             a_i = self.darray.data.arr[i]   *             self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i   *             isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket             # <<<<<<<<<<<<<< @@ -34125,7 +34866,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      (__pyx_v_isa->arr[__pyx_v_i]) = ((__pyx_v_self->ha->arr[(__pyx_v_a_i + 1)]) - 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":56 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":56   *             self.sa.arr[self.ha.arr[a_i] + word_count.arr[a_i]] = i   *             isa.arr[i] = self.ha.arr[a_i + 1] - 1 # bucket pointer is last index in bucket   *             word_count.arr[a_i] = word_count.arr[a_i] + 1             # <<<<<<<<<<<<<< @@ -34135,7 +34876,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      (__pyx_v_word_count->arr[__pyx_v_a_i]) = ((__pyx_v_word_count->arr[__pyx_v_a_i]) + 1);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":59   *    *         '''Determine size of initial runs'''   *         current_run = 0             # <<<<<<<<<<<<<< @@ -34144,7 +34885,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */    __pyx_v_current_run = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":60 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":60   *         '''Determine size of initial runs'''   *         current_run = 0   *         for i from 0 <= i < V+1:             # <<<<<<<<<<<<<< @@ -34154,23 +34895,23 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_t_6 = (__pyx_v_V + 1);    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":61 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":61   *         current_run = 0   *         for i from 0 <= i < V+1:   *             if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:             # <<<<<<<<<<<<<<   *                 current_run = current_run + 1   *             else:   */ -    __pyx_t_7 = (__pyx_v_i < __pyx_v_V); +    __pyx_t_7 = ((__pyx_v_i < __pyx_v_V) != 0);      if (__pyx_t_7) { -      __pyx_t_8 = (((__pyx_v_self->ha->arr[(__pyx_v_i + 1)]) - (__pyx_v_self->ha->arr[__pyx_v_i])) == 1); +      __pyx_t_8 = ((((__pyx_v_self->ha->arr[(__pyx_v_i + 1)]) - (__pyx_v_self->ha->arr[__pyx_v_i])) == 1) != 0);        __pyx_t_9 = __pyx_t_8;      } else {        __pyx_t_9 = __pyx_t_7;      }      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":62 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":62   *         for i from 0 <= i < V+1:   *             if i < V and self.ha.arr[i+1] - self.ha.arr[i] == 1:   *                 current_run = current_run + 1             # <<<<<<<<<<<<<< @@ -34182,17 +34923,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":64 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":64   *                 current_run = current_run + 1   *             else:   *                 if current_run > 0:             # <<<<<<<<<<<<<<   *                     self.sa.arr[self.ha.arr[i] - current_run] = -current_run   *                     current_run = 0   */ -      __pyx_t_9 = (__pyx_v_current_run > 0); +      __pyx_t_9 = ((__pyx_v_current_run > 0) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":65 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":65   *             else:   *                 if current_run > 0:   *                     self.sa.arr[self.ha.arr[i] - current_run] = -current_run             # <<<<<<<<<<<<<< @@ -34201,7 +34942,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */          (__pyx_v_self->sa->arr[((__pyx_v_self->ha->arr[__pyx_v_i]) - __pyx_v_current_run)]) = (-__pyx_v_current_run); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":66 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":66   *                 if current_run > 0:   *                     self.sa.arr[self.ha.arr[i] - current_run] = -current_run   *                     current_run = 0             # <<<<<<<<<<<<<< @@ -34216,19 +34957,19 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      __pyx_L11:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":68 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":68   *                     current_run = 0   *    *         logger.info("    Bucket sort took %f seconds", (monitor_cpu() - sort_start_time))             # <<<<<<<<<<<<<<   *    *         '''Step 2: prefix-doubling sort'''   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); @@ -34241,9 +34982,9 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_89)); -  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_89)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_89)); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_91)); +  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_91)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_91));    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11);    __Pyx_GIVEREF(__pyx_t_11);    __pyx_t_11 = 0; @@ -34253,7 +34994,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":71   *    *         '''Step 2: prefix-doubling sort'''   *         h = 1             # <<<<<<<<<<<<<< @@ -34262,7 +35003,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */    __pyx_v_h = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":72 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":72   *         '''Step 2: prefix-doubling sort'''   *         h = 1   *         while self.sa.arr[0] != -N:             # <<<<<<<<<<<<<< @@ -34270,17 +35011,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   *             logger.debug("    Refining, sort depth = %d", h)   */    while (1) { -    __pyx_t_9 = ((__pyx_v_self->sa->arr[0]) != (-__pyx_v_N)); +    __pyx_t_9 = (((__pyx_v_self->sa->arr[0]) != (-__pyx_v_N)) != 0);      if (!__pyx_t_9) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":73 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":73   *         h = 1   *         while self.sa.arr[0] != -N:   *             sort_start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *             logger.debug("    Refining, sort depth = %d", h)   *             i = 0   */ -    __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __pyx_t_1 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -34289,25 +35030,25 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __pyx_v_sort_start_time = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":74 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":74   *         while self.sa.arr[0] != -N:   *             sort_start_time = monitor_cpu()   *             logger.debug("    Refining, sort depth = %d", h)             # <<<<<<<<<<<<<<   *             i = 0   *             skip = 0   */ -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_11 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__debug); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __pyx_t_1 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 74; __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[12]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_90)); -    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_90)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_90)); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_92)); +    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_92)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_92));      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);      __Pyx_GIVEREF(__pyx_t_1);      __pyx_t_1 = 0; @@ -34317,7 +35058,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":75 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":75   *             sort_start_time = monitor_cpu()   *             logger.debug("    Refining, sort depth = %d", h)   *             i = 0             # <<<<<<<<<<<<<< @@ -34326,7 +35067,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_i = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":76 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":76   *             logger.debug("    Refining, sort depth = %d", h)   *             i = 0   *             skip = 0             # <<<<<<<<<<<<<< @@ -34335,7 +35076,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_skip = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":77 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":77   *             i = 0   *             skip = 0   *             while i < N:             # <<<<<<<<<<<<<< @@ -34343,20 +35084,20 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   *                     skip = skip + self.sa.arr[i]   */      while (1) { -      __pyx_t_9 = (__pyx_v_i < __pyx_v_N); +      __pyx_t_9 = ((__pyx_v_i < __pyx_v_N) != 0);        if (!__pyx_t_9) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":78 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":78   *             skip = 0   *             while i < N:   *                 if self.sa.arr[i] < 0:             # <<<<<<<<<<<<<<   *                     skip = skip + self.sa.arr[i]   *                     i = i - self.sa.arr[i]   */ -      __pyx_t_9 = ((__pyx_v_self->sa->arr[__pyx_v_i]) < 0); +      __pyx_t_9 = (((__pyx_v_self->sa->arr[__pyx_v_i]) < 0) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":79 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":79   *             while i < N:   *                 if self.sa.arr[i] < 0:   *                     skip = skip + self.sa.arr[i]             # <<<<<<<<<<<<<< @@ -34365,7 +35106,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */          __pyx_v_skip = (__pyx_v_skip + (__pyx_v_self->sa->arr[__pyx_v_i])); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":80 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":80   *                 if self.sa.arr[i] < 0:   *                     skip = skip + self.sa.arr[i]   *                     i = i - self.sa.arr[i]             # <<<<<<<<<<<<<< @@ -34377,17 +35118,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":82 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":82   *                     i = i - self.sa.arr[i]   *                 else:   *                     if skip < 0:             # <<<<<<<<<<<<<<   *                         self.sa.arr[i+skip] = skip   *                         skip = 0   */ -        __pyx_t_9 = (__pyx_v_skip < 0); +        __pyx_t_9 = ((__pyx_v_skip < 0) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":83 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":83   *                 else:   *                     if skip < 0:   *                         self.sa.arr[i+skip] = skip             # <<<<<<<<<<<<<< @@ -34396,7 +35137,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */            (__pyx_v_self->sa->arr[(__pyx_v_i + __pyx_v_skip)]) = __pyx_v_skip; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":84 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":84   *                     if skip < 0:   *                         self.sa.arr[i+skip] = skip   *                         skip = 0             # <<<<<<<<<<<<<< @@ -34408,7 +35149,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su          }          __pyx_L18:; -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":85 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":85   *                         self.sa.arr[i+skip] = skip   *                         skip = 0   *                     j = isa.arr[self.sa.arr[i]]             # <<<<<<<<<<<<<< @@ -34417,14 +35158,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */          __pyx_v_j = (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_i])]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":86 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":86   *                         skip = 0   *                     j = isa.arr[self.sa.arr[i]]   *                     self.q3sort(i, j, h, isa)             # <<<<<<<<<<<<<<   *                     i = j+1   *             if skip < 0:   */ -        __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1);          __pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); @@ -34452,7 +35193,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su          __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":87 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":87   *                     j = isa.arr[self.sa.arr[i]]   *                     self.q3sort(i, j, h, isa)   *                     i = j+1             # <<<<<<<<<<<<<< @@ -34464,17 +35205,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su        __pyx_L17:;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":88 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":88   *                     self.q3sort(i, j, h, isa)   *                     i = j+1   *             if skip < 0:             # <<<<<<<<<<<<<<   *                 self.sa.arr[i+skip] = skip   *             h = h * 2   */ -    __pyx_t_9 = (__pyx_v_skip < 0); +    __pyx_t_9 = ((__pyx_v_skip < 0) != 0);      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":89 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":89   *                     i = j+1   *             if skip < 0:   *                 self.sa.arr[i+skip] = skip             # <<<<<<<<<<<<<< @@ -34486,7 +35227,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      }      __pyx_L19:; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":90 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":90   *             if skip < 0:   *                 self.sa.arr[i+skip] = skip   *             h = h * 2             # <<<<<<<<<<<<<< @@ -34495,19 +35236,19 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_h = (__pyx_v_h * 2); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":91 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":91   *                 self.sa.arr[i+skip] = skip   *             h = h * 2   *             logger.debug("    Refinement took %f seconds", (monitor_cpu() - sort_start_time))             # <<<<<<<<<<<<<<   *    *         '''Step 3: read off suffix array from inverse suffix array'''   */ -    __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10); -    __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__debug); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__debug); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12);      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -    __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10);      __pyx_t_1 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); @@ -34520,9 +35261,9 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_91)); -    PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_kp_s_91)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_91)); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_93)); +    PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_kp_s_93)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_93));      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_11);      __Pyx_GIVEREF(__pyx_t_11);      __pyx_t_11 = 0; @@ -34533,24 +35274,24 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":94 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":94   *    *         '''Step 3: read off suffix array from inverse suffix array'''   *         logger.info("    Finalizing sort...")             # <<<<<<<<<<<<<<   *         for i from 0 <= i < N:   *             j = isa.arr[i]   */ -  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_11); -  __pyx_t_10 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10);    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -  __pyx_t_11 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_93), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_11 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_k_tuple_95), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __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_11); __pyx_t_11 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":95 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":95   *         '''Step 3: read off suffix array from inverse suffix array'''   *         logger.info("    Finalizing sort...")   *         for i from 0 <= i < N:             # <<<<<<<<<<<<<< @@ -34560,7 +35301,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __pyx_t_5 = __pyx_v_N;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":96 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":96   *         logger.info("    Finalizing sort...")   *         for i from 0 <= i < N:   *             j = isa.arr[i]             # <<<<<<<<<<<<<< @@ -34569,7 +35310,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su   */      __pyx_v_j = (__pyx_v_isa->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":97 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":97   *         for i from 0 <= i < N:   *             j = isa.arr[i]   *             self.sa.arr[j] = i             # <<<<<<<<<<<<<< @@ -34579,19 +35320,19 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su      (__pyx_v_self->sa->arr[__pyx_v_j]) = __pyx_v_i;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":98 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":98   *             j = isa.arr[i]   *             self.sa.arr[j] = i   *         logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))             # <<<<<<<<<<<<<<   *    *     def q3sort(self, int i, int j, int h, IntList isa, pad=""):   */ -  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_11); -  __pyx_t_10 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s__info); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10);    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_11);    __pyx_t_12 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_12); @@ -34604,9 +35345,9 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_4read_text(struct __pyx_obj_3_sa_Su    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_11); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_94)); -  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_kp_s_94)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_94)); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_96)); +  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_kp_s_96)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_96));    PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_t_1 = 0; @@ -34643,13 +35384,16 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_7q3sort(PyObject *__pyx_v_self, PyO    int __pyx_v_h;    struct __pyx_obj_3_sa_IntList *__pyx_v_isa = 0;    PyObject *__pyx_v_pad = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i,&__pyx_n_s__j,&__pyx_n_s__h,&__pyx_n_s__isa,&__pyx_n_s__pad,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("q3sort (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__i,&__pyx_n_s__j,&__pyx_n_s__h,&__pyx_n_s__isa,&__pyx_n_s__pad,0};      PyObject* values[5] = {0,0,0,0,0}; -    values[4] = ((PyObject *)__pyx_kp_s_45); +    values[4] = ((PyObject *)__pyx_kp_s_47);      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args;        const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -34665,24 +35409,20 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_7q3sort(PyObject *__pyx_v_self, PyO        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__h); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__h)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 2); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__isa); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__isa)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("q3sort", 0, 4, 5, 3); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -34730,7 +35470,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_7q3sort(PyObject *__pyx_v_self, PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":100 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":100   *         logger.info("Suffix array construction took %f seconds", (monitor_cpu() - start_time))   *    *     def q3sort(self, int i, int j, int h, IntList isa, pad=""):             # <<<<<<<<<<<<<< @@ -34760,17 +35500,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("q3sort", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":107 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":107   *         cdef int k, midpoint, pval, phead, ptail, tmp   *    *         if j-i < -1:             # <<<<<<<<<<<<<<   *             raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))   *         if j-i == -1:    # recursive base case -- empty interval   */ -  __pyx_t_1 = ((__pyx_v_j - __pyx_v_i) < -1); +  __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) < -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":108 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":108   *    *         if j-i < -1:   *             raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))             # <<<<<<<<<<<<<< @@ -34789,7 +35529,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi      __Pyx_GIVEREF(__pyx_t_3);      __pyx_t_2 = 0;      __pyx_t_3 = 0; -    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_95), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_97), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_3));      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -34807,17 +35547,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":109 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":109   *         if j-i < -1:   *             raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))   *         if j-i == -1:    # recursive base case -- empty interval             # <<<<<<<<<<<<<<   *             return   *         if (j-i == 0):    # recursive base case -- singleton interval   */ -  __pyx_t_1 = ((__pyx_v_j - __pyx_v_i) == -1); +  __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":110 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":110   *             raise Exception("Unexpected condition found in q3sort: sort from %d to %d" % (i,j))   *         if j-i == -1:    # recursive base case -- empty interval   *             return             # <<<<<<<<<<<<<< @@ -34831,17 +35571,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":111 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":111   *         if j-i == -1:    # recursive base case -- empty interval   *             return   *         if (j-i == 0):    # recursive base case -- singleton interval             # <<<<<<<<<<<<<<   *             isa.arr[self.sa.arr[i]] = i   *             self.sa.arr[i] = -1   */ -  __pyx_t_1 = ((__pyx_v_j - __pyx_v_i) == 0); +  __pyx_t_1 = (((__pyx_v_j - __pyx_v_i) == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":112 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":112   *             return   *         if (j-i == 0):    # recursive base case -- singleton interval   *             isa.arr[self.sa.arr[i]] = i             # <<<<<<<<<<<<<< @@ -34850,7 +35590,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */      (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_i])]) = __pyx_v_i; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":113 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":113   *         if (j-i == 0):    # recursive base case -- singleton interval   *             isa.arr[self.sa.arr[i]] = i   *             self.sa.arr[i] = -1             # <<<<<<<<<<<<<< @@ -34859,7 +35599,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */      (__pyx_v_self->sa->arr[__pyx_v_i]) = -1; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":114 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":114   *             isa.arr[self.sa.arr[i]] = i   *             self.sa.arr[i] = -1   *             return             # <<<<<<<<<<<<<< @@ -34873,7 +35613,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":123 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":123   *         # If the method of assigning word_id's is changed, this method   *         # may need to be reconsidered as well.   *         midpoint = (i+j)/2             # <<<<<<<<<<<<<< @@ -34882,7 +35622,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */    __pyx_v_midpoint = __Pyx_div_long((__pyx_v_i + __pyx_v_j), 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":124 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":124   *         # may need to be reconsidered as well.   *         midpoint = (i+j)/2   *         pval = isa.arr[self.sa.arr[midpoint] + h]             # <<<<<<<<<<<<<< @@ -34891,17 +35631,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */    __pyx_v_pval = (__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_h)]); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":125 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":125   *         midpoint = (i+j)/2   *         pval = isa.arr[self.sa.arr[midpoint] + h]   *         if i != midpoint:             # <<<<<<<<<<<<<<   *             tmp = self.sa.arr[midpoint]   *             self.sa.arr[midpoint] = self.sa.arr[i]   */ -  __pyx_t_1 = (__pyx_v_i != __pyx_v_midpoint); +  __pyx_t_1 = ((__pyx_v_i != __pyx_v_midpoint) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":126 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":126   *         pval = isa.arr[self.sa.arr[midpoint] + h]   *         if i != midpoint:   *             tmp = self.sa.arr[midpoint]             # <<<<<<<<<<<<<< @@ -34910,7 +35650,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */      __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_midpoint]); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":127 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":127   *         if i != midpoint:   *             tmp = self.sa.arr[midpoint]   *             self.sa.arr[midpoint] = self.sa.arr[i]             # <<<<<<<<<<<<<< @@ -34919,7 +35659,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */      (__pyx_v_self->sa->arr[__pyx_v_midpoint]) = (__pyx_v_self->sa->arr[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":128 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":128   *             tmp = self.sa.arr[midpoint]   *             self.sa.arr[midpoint] = self.sa.arr[i]   *             self.sa.arr[i] = tmp             # <<<<<<<<<<<<<< @@ -34931,7 +35671,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":129 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":129   *             self.sa.arr[midpoint] = self.sa.arr[i]   *             self.sa.arr[i] = tmp   *         phead = i             # <<<<<<<<<<<<<< @@ -34940,7 +35680,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */    __pyx_v_phead = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":130 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":130   *             self.sa.arr[i] = tmp   *         phead = i   *         ptail = i             # <<<<<<<<<<<<<< @@ -34949,7 +35689,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */    __pyx_v_ptail = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":134 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":134   *         # find the three partitions.    phead marks the first element   *         # of the middle partition, and ptail marks the last element   *         for k from i+1 <= k < j+1:             # <<<<<<<<<<<<<< @@ -34959,27 +35699,27 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    __pyx_t_5 = (__pyx_v_j + 1);    for (__pyx_v_k = (__pyx_v_i + 1); __pyx_v_k < __pyx_t_5; __pyx_v_k++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":135 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":135   *         # of the middle partition, and ptail marks the last element   *         for k from i+1 <= k < j+1:   *             if isa.arr[self.sa.arr[k] + h] < pval:             # <<<<<<<<<<<<<<   *                 if k > ptail+1:   *                     tmp = self.sa.arr[phead]   */ -    __pyx_t_1 = ((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) < __pyx_v_pval); +    __pyx_t_1 = (((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) < __pyx_v_pval) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":136 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":136   *         for k from i+1 <= k < j+1:   *             if isa.arr[self.sa.arr[k] + h] < pval:   *                 if k > ptail+1:             # <<<<<<<<<<<<<<   *                     tmp = self.sa.arr[phead]   *                     self.sa.arr[phead] = self.sa.arr[k]   */ -      __pyx_t_1 = (__pyx_v_k > (__pyx_v_ptail + 1)); +      __pyx_t_1 = ((__pyx_v_k > (__pyx_v_ptail + 1)) != 0);        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":137 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":137   *             if isa.arr[self.sa.arr[k] + h] < pval:   *                 if k > ptail+1:   *                     tmp = self.sa.arr[phead]             # <<<<<<<<<<<<<< @@ -34988,7 +35728,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */          __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_phead]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":138 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":138   *                 if k > ptail+1:   *                     tmp = self.sa.arr[phead]   *                     self.sa.arr[phead] = self.sa.arr[k]             # <<<<<<<<<<<<<< @@ -34997,7 +35737,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */          (__pyx_v_self->sa->arr[__pyx_v_phead]) = (__pyx_v_self->sa->arr[__pyx_v_k]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":139 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":139   *                     tmp = self.sa.arr[phead]   *                     self.sa.arr[phead] = self.sa.arr[k]   *                     self.sa.arr[k] = self.sa.arr[ptail+1]             # <<<<<<<<<<<<<< @@ -35006,7 +35746,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */          (__pyx_v_self->sa->arr[__pyx_v_k]) = (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":140 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":140   *                     self.sa.arr[phead] = self.sa.arr[k]   *                     self.sa.arr[k] = self.sa.arr[ptail+1]   *                     self.sa.arr[ptail+1] = tmp             # <<<<<<<<<<<<<< @@ -35018,7 +35758,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":142 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":142   *                     self.sa.arr[ptail+1] = tmp   *                 else: # k == ptail+1   *                     tmp = self.sa.arr[phead]             # <<<<<<<<<<<<<< @@ -35027,7 +35767,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */          __pyx_v_tmp = (__pyx_v_self->sa->arr[__pyx_v_phead]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":143 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":143   *                 else: # k == ptail+1   *                     tmp = self.sa.arr[phead]   *                     self.sa.arr[phead] = self.sa.arr[k]             # <<<<<<<<<<<<<< @@ -35036,7 +35776,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */          (__pyx_v_self->sa->arr[__pyx_v_phead]) = (__pyx_v_self->sa->arr[__pyx_v_k]); -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":144 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":144   *                     tmp = self.sa.arr[phead]   *                     self.sa.arr[phead] = self.sa.arr[k]   *                     self.sa.arr[k] = tmp             # <<<<<<<<<<<<<< @@ -35047,7 +35787,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi        }        __pyx_L10:; -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":145 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":145   *                     self.sa.arr[phead] = self.sa.arr[k]   *                     self.sa.arr[k] = tmp   *                 phead = phead + 1             # <<<<<<<<<<<<<< @@ -35056,7 +35796,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */        __pyx_v_phead = (__pyx_v_phead + 1); -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":146 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":146   *                     self.sa.arr[k] = tmp   *                 phead = phead + 1   *                 ptail = ptail + 1             # <<<<<<<<<<<<<< @@ -35068,27 +35808,27 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":148 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":148   *                 ptail = ptail + 1   *             else:   *                 if isa.arr[self.sa.arr[k] + h] == pval:             # <<<<<<<<<<<<<<   *                     if k > ptail+1:   *                         tmp = self.sa.arr[ptail+1]   */ -      __pyx_t_1 = ((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) == __pyx_v_pval); +      __pyx_t_1 = (((__pyx_v_isa->arr[((__pyx_v_self->sa->arr[__pyx_v_k]) + __pyx_v_h)]) == __pyx_v_pval) != 0);        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":149 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":149   *             else:   *                 if isa.arr[self.sa.arr[k] + h] == pval:   *                     if k > ptail+1:             # <<<<<<<<<<<<<<   *                         tmp = self.sa.arr[ptail+1]   *                         self.sa.arr[ptail+1] = self.sa.arr[k]   */ -        __pyx_t_1 = (__pyx_v_k > (__pyx_v_ptail + 1)); +        __pyx_t_1 = ((__pyx_v_k > (__pyx_v_ptail + 1)) != 0);          if (__pyx_t_1) { -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":150 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":150   *                 if isa.arr[self.sa.arr[k] + h] == pval:   *                     if k > ptail+1:   *                         tmp = self.sa.arr[ptail+1]             # <<<<<<<<<<<<<< @@ -35097,7 +35837,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */            __pyx_v_tmp = (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]); -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":151 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":151   *                     if k > ptail+1:   *                         tmp = self.sa.arr[ptail+1]   *                         self.sa.arr[ptail+1] = self.sa.arr[k]             # <<<<<<<<<<<<<< @@ -35106,7 +35846,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi   */            (__pyx_v_self->sa->arr[(__pyx_v_ptail + 1)]) = (__pyx_v_self->sa->arr[__pyx_v_k]); -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":152 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":152   *                         tmp = self.sa.arr[ptail+1]   *                         self.sa.arr[ptail+1] = self.sa.arr[k]   *                         self.sa.arr[k] = tmp             # <<<<<<<<<<<<<< @@ -35118,7 +35858,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi          }          __pyx_L12:; -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":153 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":153   *                         self.sa.arr[ptail+1] = self.sa.arr[k]   *                         self.sa.arr[k] = tmp   *                     ptail = ptail + 1             # <<<<<<<<<<<<<< @@ -35133,14 +35873,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi      __pyx_L9:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":156 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":156   *    *         # recursively sort smaller suffixes   *         self.q3sort(i, phead-1, h, isa, pad+"    ")             # <<<<<<<<<<<<<<   *    *         # update suffixes with pivot value   */ -  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -35148,7 +35888,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    __Pyx_GOTREF(__pyx_t_2);    __pyx_t_6 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_6); -  __pyx_t_7 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_7 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7);    __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8); @@ -35173,7 +35913,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":160 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":160   *         # update suffixes with pivot value   *         # corresponds to update_group function in Larsson & Sadakane   *         for k from phead <= k < ptail+1:             # <<<<<<<<<<<<<< @@ -35183,7 +35923,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    __pyx_t_5 = (__pyx_v_ptail + 1);    for (__pyx_v_k = __pyx_v_phead; __pyx_v_k < __pyx_t_5; __pyx_v_k++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":161 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":161   *         # corresponds to update_group function in Larsson & Sadakane   *         for k from phead <= k < ptail+1:   *             isa.arr[self.sa.arr[k]] = ptail             # <<<<<<<<<<<<<< @@ -35193,17 +35933,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi      (__pyx_v_isa->arr[(__pyx_v_self->sa->arr[__pyx_v_k])]) = __pyx_v_ptail;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":162 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":162   *         for k from phead <= k < ptail+1:   *             isa.arr[self.sa.arr[k]] = ptail   *         if phead == ptail:             # <<<<<<<<<<<<<<   *             self.sa.arr[phead] = -1   *    */ -  __pyx_t_1 = (__pyx_v_phead == __pyx_v_ptail); +  __pyx_t_1 = ((__pyx_v_phead == __pyx_v_ptail) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":163 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":163   *             isa.arr[self.sa.arr[k]] = ptail   *         if phead == ptail:   *             self.sa.arr[phead] = -1             # <<<<<<<<<<<<<< @@ -35215,14 +35955,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    }    __pyx_L15:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":166 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":166   *    *         # recursively sort larger suffixes   *         self.q3sort(ptail+1, j, h, isa, pad+"    ")             # <<<<<<<<<<<<<<   *    *    */ -  __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__q3sort); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7);    __pyx_t_8 = PyInt_FromLong((__pyx_v_ptail + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8); @@ -35230,7 +35970,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi    __Pyx_GOTREF(__pyx_t_3);    __pyx_t_6 = PyInt_FromLong(__pyx_v_h); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_6); -  __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_v_pad, ((PyObject *)__pyx_kp_s_50)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __pyx_t_4 = PyTuple_New(5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -35276,11 +36016,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_6q3sort(struct __pyx_obj_3_sa_Suffi  static PyObject *__pyx_pw_3_sa_11SuffixArray_9write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_11SuffixArray_9write_text(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_text (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -35293,7 +36036,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_9write_text(PyObject *__pyx_v_self,    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":169 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":169   *    *    *     def write_text(self, char* filename):             # <<<<<<<<<<<<<< @@ -35312,16 +36055,16 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_8write_text(struct __pyx_obj_3_sa_S    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_text", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":170 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":170   *    *     def write_text(self, char* filename):   *         self.darray.write_text(filename)             # <<<<<<<<<<<<<<   *    *     def read_binary(self, char* filename):   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->darray), __pyx_n_s__write_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->darray), __pyx_n_s__write_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2));    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -35352,11 +36095,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_8write_text(struct __pyx_obj_3_sa_S  static PyObject *__pyx_pw_3_sa_11SuffixArray_11read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_11SuffixArray_11read_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -35369,7 +36115,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_11read_binary(PyObject *__pyx_v_sel    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":172 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":172   *         self.darray.write_text(filename)   *    *     def read_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -35383,7 +36129,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("read_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":174 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":174   *     def read_binary(self, char* filename):   *         cdef FILE *f   *         f = fopen(filename, "r")             # <<<<<<<<<<<<<< @@ -35392,7 +36138,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__r); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":175 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":175   *         cdef FILE *f   *         f = fopen(filename, "r")   *         self.darray.read_handle(f)             # <<<<<<<<<<<<<< @@ -35401,7 +36147,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa   */    ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->darray->__pyx_vtab)->read_handle(__pyx_v_self->darray, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":176 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":176   *         f = fopen(filename, "r")   *         self.darray.read_handle(f)   *         self.sa.read_handle(f)             # <<<<<<<<<<<<<< @@ -35410,7 +36156,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sa->__pyx_vtab)->read_handle(__pyx_v_self->sa, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":177 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":177   *         self.darray.read_handle(f)   *         self.sa.read_handle(f)   *         self.ha.read_handle(f)             # <<<<<<<<<<<<<< @@ -35419,7 +36165,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->ha->__pyx_vtab)->read_handle(__pyx_v_self->ha, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":178 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":178   *         self.sa.read_handle(f)   *         self.ha.read_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -35438,11 +36184,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_10read_binary(struct __pyx_obj_3_sa  static PyObject *__pyx_pw_3_sa_11SuffixArray_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_11SuffixArray_13write_binary(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -35455,7 +36204,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_13write_binary(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":180 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":180   *         fclose(f)   *    *     def write_binary(self, char* filename):             # <<<<<<<<<<<<<< @@ -35469,7 +36218,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_binary", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":182 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":182   *     def write_binary(self, char* filename):   *         cdef FILE* f   *         f = fopen(filename, "w")             # <<<<<<<<<<<<<< @@ -35478,7 +36227,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s   */    __pyx_v_f = fopen(__pyx_v_filename, __pyx_k__w); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":183 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":183   *         cdef FILE* f   *         f = fopen(filename, "w")   *         self.darray.write_handle(f)             # <<<<<<<<<<<<<< @@ -35487,7 +36236,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s   */    ((struct __pyx_vtabstruct_3_sa_DataArray *)__pyx_v_self->darray->__pyx_vtab)->write_handle(__pyx_v_self->darray, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":184 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":184   *         f = fopen(filename, "w")   *         self.darray.write_handle(f)   *         self.sa.write_handle(f)             # <<<<<<<<<<<<<< @@ -35496,7 +36245,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->sa->__pyx_vtab)->write_handle(__pyx_v_self->sa, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":185   *         self.darray.write_handle(f)   *         self.sa.write_handle(f)   *         self.ha.write_handle(f)             # <<<<<<<<<<<<<< @@ -35505,7 +36254,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s   */    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_self->ha->__pyx_vtab)->write_handle(__pyx_v_self->ha, __pyx_v_f); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":186 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":186   *         self.sa.write_handle(f)   *         self.ha.write_handle(f)   *         fclose(f)             # <<<<<<<<<<<<<< @@ -35524,11 +36273,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_12write_binary(struct __pyx_obj_3_s  static PyObject *__pyx_pw_3_sa_11SuffixArray_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename); /*proto*/  static PyObject *__pyx_pw_3_sa_11SuffixArray_15write_enhanced(PyObject *__pyx_v_self, PyObject *__pyx_arg_filename) {    char *__pyx_v_filename; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("write_enhanced (wrapper)", 0);    assert(__pyx_arg_filename); { -    __pyx_v_filename = PyBytes_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_v_filename = __Pyx_PyObject_AsString(__pyx_arg_filename); if (unlikely((!__pyx_v_filename) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L3_error:; @@ -35541,7 +36293,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_15write_enhanced(PyObject *__pyx_v_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":188 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":188   *         fclose(f)   *    *     def write_enhanced(self, char* filename):             # <<<<<<<<<<<<<< @@ -35573,7 +36325,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("write_enhanced", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":189 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -35581,7 +36333,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3   *             for a_i in self.sa:   */    /*with:*/ { -    __pyx_t_1 = PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_1));      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); @@ -35594,9 +36346,9 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3      __pyx_t_1 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -35613,14 +36365,14 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            __pyx_v_f = __pyx_t_4;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":190 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":190   *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:   *             self.darray.write_enhanced_handle(f)             # <<<<<<<<<<<<<<   *             for a_i in self.sa:   *                 f.write("%d " % a_i)   */ -          __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self->darray), __pyx_n_s_27); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->darray), __pyx_n_s_29); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4);            __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_1); @@ -35633,7 +36385,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":191 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":191   *         with open(filename, "w") as f:   *             self.darray.write_enhanced_handle(f)   *             for a_i in self.sa:             # <<<<<<<<<<<<<< @@ -35651,10 +36403,18 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_2)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_1 = __pyx_t_9(__pyx_t_2);                if (unlikely(!__pyx_t_1)) { @@ -35670,16 +36430,16 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3              __pyx_v_a_i = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":192 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":192   *             self.darray.write_enhanced_handle(f)   *             for a_i in self.sa:   *                 f.write("%d " % a_i)             # <<<<<<<<<<<<<<   *             f.write("\n")   *             for w_i in self.ha:   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_a_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_a_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_4));              __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_10); @@ -35694,21 +36454,21 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            }            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":193 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":193   *             for a_i in self.sa:   *                 f.write("%d " % a_i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for w_i in self.ha:   *                 f.write("%d " % w_i)   */ -          __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_2); -          __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_96), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_98), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4);            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":194 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":194   *                 f.write("%d " % a_i)   *             f.write("\n")   *             for w_i in self.ha:             # <<<<<<<<<<<<<< @@ -35726,10 +36486,18 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            for (;;) {              if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_4)) {                if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #else +              __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +              #endif              } else {                __pyx_t_2 = __pyx_t_9(__pyx_t_4);                if (unlikely(!__pyx_t_2)) { @@ -35745,16 +36513,16 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3              __pyx_v_w_i = __pyx_t_2;              __pyx_t_2 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":195 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":195   *             f.write("\n")   *             for w_i in self.ha:   *                 f.write("%d " % w_i)             # <<<<<<<<<<<<<<   *             f.write("\n")   *    */ -            __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_2); -            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_v_w_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +            __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_v_w_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_10));              __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}              __Pyx_GOTREF(__pyx_t_1); @@ -35769,16 +36537,16 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            }            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":196 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":196   *             for w_i in self.ha:   *                 f.write("%d " % w_i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     cdef int __search_high(self, int word_id, int offset, int low, int high):   */ -          __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_97), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;} +          __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_99), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L7_error;}            __Pyx_GOTREF(__pyx_t_10);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -35793,7 +36561,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":189 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<< @@ -35823,8 +36591,8 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3            __Pyx_GOTREF(__pyx_t_12);            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12);            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -          if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} -          __pyx_t_13 = (!__pyx_t_11); +          if (__pyx_t_11 < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;} +          __pyx_t_13 = ((!(__pyx_t_11 != 0)) != 0);            if (__pyx_t_13) {              __Pyx_GIVEREF(__pyx_t_10);              __Pyx_GIVEREF(__pyx_t_4); @@ -35857,13 +36625,13 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3      }      /*finally:*/ {        if (__pyx_t_3) { -        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_98, NULL); +        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_100, NULL);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__pyx_t_13 < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }      }      goto __pyx_L23; @@ -35891,7 +36659,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_14write_enhanced(struct __pyx_obj_3    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":198 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":198   *             f.write("\n")   *    *     cdef int __search_high(self, int word_id, int offset, int low, int high):             # <<<<<<<<<<<<<< @@ -35906,17 +36674,17 @@ static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_Suffix    int __pyx_t_1;    __Pyx_RefNannySetupContext("__search_high", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":201 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":201   *         cdef int midpoint   *    *         if low >= high:             # <<<<<<<<<<<<<<   *             return high   *         midpoint = (high + low) / 2   */ -  __pyx_t_1 = (__pyx_v_low >= __pyx_v_high); +  __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":202 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":202   *    *         if low >= high:   *             return high             # <<<<<<<<<<<<<< @@ -35929,7 +36697,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_Suffix    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":203 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":203   *         if low >= high:   *             return high   *         midpoint = (high + low) / 2             # <<<<<<<<<<<<<< @@ -35938,17 +36706,17 @@ static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_Suffix   */    __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":204 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":204   *             return high   *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:             # <<<<<<<<<<<<<<   *             return self.__search_high(word_id, offset, midpoint+1, high)   *         else:   */ -  __pyx_t_1 = ((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id); +  __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":205 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":205   *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:   *             return self.__search_high(word_id, offset, midpoint+1, high)             # <<<<<<<<<<<<<< @@ -35961,7 +36729,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_Suffix    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":207 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":207   *             return self.__search_high(word_id, offset, midpoint+1, high)   *         else:   *             return self.__search_high(word_id, offset, low, midpoint)             # <<<<<<<<<<<<<< @@ -35979,7 +36747,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_high(struct __pyx_obj_3_sa_Suffix    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":209 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":209   *             return self.__search_high(word_id, offset, low, midpoint)   *    *     cdef int __search_low(self, int word_id, int offset, int low, int high):             # <<<<<<<<<<<<<< @@ -35994,17 +36762,17 @@ static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixA    int __pyx_t_1;    __Pyx_RefNannySetupContext("__search_low", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":212 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":212   *         cdef int midpoint   *    *         if low >= high:             # <<<<<<<<<<<<<<   *             return high   *         midpoint = (high + low) / 2   */ -  __pyx_t_1 = (__pyx_v_low >= __pyx_v_high); +  __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":213 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":213   *    *         if low >= high:   *             return high             # <<<<<<<<<<<<<< @@ -36017,7 +36785,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixA    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":214 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":214   *         if low >= high:   *             return high   *         midpoint = (high + low) / 2             # <<<<<<<<<<<<<< @@ -36026,17 +36794,17 @@ static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixA   */    __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":215 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":215   *             return high   *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:             # <<<<<<<<<<<<<<   *             return self.__search_low(word_id, offset, low, midpoint)   *         else:   */ -  __pyx_t_1 = ((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id); +  __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":216 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":216   *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:   *             return self.__search_low(word_id, offset, low, midpoint)             # <<<<<<<<<<<<<< @@ -36049,7 +36817,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixA    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":218 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":218   *             return self.__search_low(word_id, offset, low, midpoint)   *         else:   *             return self.__search_low(word_id, offset, midpoint+1, high)             # <<<<<<<<<<<<<< @@ -36067,7 +36835,7 @@ static int __pyx_f_3_sa_11SuffixArray___search_low(struct __pyx_obj_3_sa_SuffixA    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":220 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":220   *             return self.__search_low(word_id, offset, midpoint+1, high)   *    *     cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):             # <<<<<<<<<<<<<< @@ -36086,7 +36854,7 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___get_range(struct __pyx_obj_3_sa_Su    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__get_range", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":221 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":221   *    *     cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):   *         return (self.__search_low(word_id, offset, low, midpoint),             # <<<<<<<<<<<<<< @@ -36097,7 +36865,7 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___get_range(struct __pyx_obj_3_sa_Su    __pyx_t_1 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___search_low(__pyx_v_self, __pyx_v_word_id, __pyx_v_offset, __pyx_v_low, __pyx_v_midpoint)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":222 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":222   *     cdef __get_range(self, int word_id, int offset, int low, int high, int midpoint):   *         return (self.__search_low(word_id, offset, low, midpoint),   *                 self.__search_high(word_id, offset, midpoint, high))             # <<<<<<<<<<<<<< @@ -36132,7 +36900,7 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___get_range(struct __pyx_obj_3_sa_Su    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":224 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":224   *                 self.__search_high(word_id, offset, midpoint, high))   *    *     cdef __lookup_helper(self, int word_id, int offset, int low, int high):             # <<<<<<<<<<<<<< @@ -36153,17 +36921,17 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__lookup_helper", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":227 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":227   *         cdef int midpoint   *    *         if offset == 0:             # <<<<<<<<<<<<<<   *             return (self.ha.arr[word_id], self.ha.arr[word_id+1])   *         if low >= high:   */ -  __pyx_t_1 = (__pyx_v_offset == 0); +  __pyx_t_1 = ((__pyx_v_offset == 0) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":228 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":228   *    *         if offset == 0:   *             return (self.ha.arr[word_id], self.ha.arr[word_id+1])             # <<<<<<<<<<<<<< @@ -36190,17 +36958,17 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":229 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":229   *         if offset == 0:   *             return (self.ha.arr[word_id], self.ha.arr[word_id+1])   *         if low >= high:             # <<<<<<<<<<<<<<   *             return None   *    */ -  __pyx_t_1 = (__pyx_v_low >= __pyx_v_high); +  __pyx_t_1 = ((__pyx_v_low >= __pyx_v_high) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":230 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":230   *             return (self.ha.arr[word_id], self.ha.arr[word_id+1])   *         if low >= high:   *             return None             # <<<<<<<<<<<<<< @@ -36215,7 +36983,7 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":232 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":232   *             return None   *    *         midpoint = (high + low) / 2             # <<<<<<<<<<<<<< @@ -36224,17 +36992,17 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s   */    __pyx_v_midpoint = __Pyx_div_long((__pyx_v_high + __pyx_v_low), 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":233 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":233   *    *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:             # <<<<<<<<<<<<<<   *             return self.__get_range(word_id, offset, low, high, midpoint)   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:   */ -  __pyx_t_1 = ((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id); +  __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) == __pyx_v_word_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":234 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":234   *         midpoint = (high + low) / 2   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:   *             return self.__get_range(word_id, offset, low, high, midpoint)             # <<<<<<<<<<<<<< @@ -36251,17 +37019,17 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":235 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":235   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] == word_id:   *             return self.__get_range(word_id, offset, low, high, midpoint)   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:             # <<<<<<<<<<<<<<   *             return self.__lookup_helper(word_id, offset, low, midpoint)   *         else:   */ -  __pyx_t_1 = ((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) > __pyx_v_word_id); +  __pyx_t_1 = (((__pyx_v_self->darray->data->arr[((__pyx_v_self->sa->arr[__pyx_v_midpoint]) + __pyx_v_offset)]) > __pyx_v_word_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":236 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":236   *             return self.__get_range(word_id, offset, low, high, midpoint)   *         if self.darray.data.arr[self.sa.arr[midpoint] + offset] > word_id:   *             return self.__lookup_helper(word_id, offset, low, midpoint)             # <<<<<<<<<<<<<< @@ -36278,7 +37046,7 @@ static PyObject *__pyx_f_3_sa_11SuffixArray___lookup_helper(struct __pyx_obj_3_s    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":238 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":238   *             return self.__lookup_helper(word_id, offset, low, midpoint)   *         else:   *             return self.__lookup_helper(word_id, offset, midpoint+1, high)             # <<<<<<<<<<<<<< @@ -36315,11 +37083,14 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_17lookup(PyObject *__pyx_v_self, Py    int __pyx_v_offset;    int __pyx_v_low;    int __pyx_v_high; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,&__pyx_n_s__offset,&__pyx_n_s__low,&__pyx_n_s__high,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lookup (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__word,&__pyx_n_s__offset,&__pyx_n_s__low,&__pyx_n_s__high,0};      PyObject* values[4] = {0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -36335,24 +37106,20 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_17lookup(PyObject *__pyx_v_self, Py        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__word)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__low); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__low)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 2); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__high); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__high)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 3); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -36386,7 +37153,7 @@ static PyObject *__pyx_pw_3_sa_11SuffixArray_17lookup(PyObject *__pyx_v_self, Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":240 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":240   *             return self.__lookup_helper(word_id, offset, midpoint+1, high)   *    *     def lookup(self, word, int offset, int low, int high):             # <<<<<<<<<<<<<< @@ -36402,22 +37169,23 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff    PyObject *__pyx_t_2 = NULL;    Py_ssize_t __pyx_t_3;    int __pyx_t_4; +  int __pyx_t_5;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lookup", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":242 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":242   *     def lookup(self, word, int offset, int low, int high):   *         cdef int wordid   *         if low == -1:             # <<<<<<<<<<<<<<   *             low = 0   *         if high == -1:   */ -  __pyx_t_1 = (__pyx_v_low == -1); +  __pyx_t_1 = ((__pyx_v_low == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":243 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":243   *         cdef int wordid   *         if low == -1:   *             low = 0             # <<<<<<<<<<<<<< @@ -36429,17 +37197,17 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":244 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":244   *         if low == -1:   *             low = 0   *         if high == -1:             # <<<<<<<<<<<<<<   *             high = len(self.sa)   *         if word in self.darray.word2id:   */ -  __pyx_t_1 = (__pyx_v_high == -1); +  __pyx_t_1 = ((__pyx_v_high == -1) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":245 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":245   *             low = 0   *         if high == -1:   *             high = len(self.sa)             # <<<<<<<<<<<<<< @@ -36455,17 +37223,18 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":246 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":246   *         if high == -1:   *             high = len(self.sa)   *         if word in self.darray.word2id:             # <<<<<<<<<<<<<<   *             word_id = self.darray.word2id[word]   *             return self.__lookup_helper(word_id, offset, low, high)   */ -  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self->darray->word2id, __pyx_v_word))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_word, __pyx_v_self->darray->word2id, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = (__pyx_t_1 != 0); +  if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":247 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":247   *             high = len(self.sa)   *         if word in self.darray.word2id:   *             word_id = self.darray.word2id[word]             # <<<<<<<<<<<<<< @@ -36477,7 +37246,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff      __pyx_v_word_id = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":248 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":248   *         if word in self.darray.word2id:   *             word_id = self.darray.word2id[word]   *             return self.__lookup_helper(word_id, offset, low, high)             # <<<<<<<<<<<<<< @@ -36485,8 +37254,8 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff   *             return None   */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___lookup_helper(__pyx_v_self, __pyx_t_4, __pyx_v_offset, __pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_word_id); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = ((struct __pyx_vtabstruct_3_sa_SuffixArray *)__pyx_v_self->__pyx_vtab)->__pyx___lookup_helper(__pyx_v_self, __pyx_t_5, __pyx_v_offset, __pyx_v_low, __pyx_v_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_r = __pyx_t_2;      __pyx_t_2 = 0; @@ -36495,7 +37264,7 @@ static PyObject *__pyx_pf_3_sa_11SuffixArray_16lookup(struct __pyx_obj_3_sa_Suff    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":250 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":250   *             return self.__lookup_helper(word_id, offset, low, high)   *         else:   *             return None             # <<<<<<<<<<<<<< @@ -36534,7 +37303,7 @@ static int __pyx_pw_3_sa_8TrieNode_1__cinit__(PyObject *__pyx_v_self, PyObject *    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":49 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":49   *     cdef public children   *    *     def __cinit__(self):             # <<<<<<<<<<<<<< @@ -36551,7 +37320,7 @@ static int __pyx_pf_3_sa_8TrieNode___cinit__(struct __pyx_obj_3_sa_TrieNode *__p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":50 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":50   *    *     def __cinit__(self):   *         self.children = {}             # <<<<<<<<<<<<<< @@ -36588,7 +37357,7 @@ static PyObject *__pyx_pw_3_sa_8TrieNode_8children_1__get__(PyObject *__pyx_v_se    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":47 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":47   *    * cdef class TrieNode:   *     cdef public children             # <<<<<<<<<<<<<< @@ -36670,14 +37439,17 @@ static int __pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(PyObject *__pyx_v_self, P    PyObject *__pyx_v_phrase = 0;    PyObject *__pyx_v_phrase_location = 0;    PyObject *__pyx_v_suffix_link = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__phrase,&__pyx_n_s__phrase_location,&__pyx_n_s__suffix_link,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__phrase,&__pyx_n_s__phrase_location,&__pyx_n_s__suffix_link,0};      PyObject* values[3] = {0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":57 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":57   *     cdef public suffix_link   *    *     def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):             # <<<<<<<<<<<<<< @@ -36749,7 +37521,7 @@ static int __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(struct __pyx_obj_3_sa_Exte    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":58 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":58   *    *     def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):   *         self.phrase = phrase             # <<<<<<<<<<<<<< @@ -36762,7 +37534,7 @@ static int __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(struct __pyx_obj_3_sa_Exte    __Pyx_DECREF(__pyx_v_self->phrase);    __pyx_v_self->phrase = __pyx_v_phrase; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":59   *     def __cinit__(self, phrase=None, phrase_location=None, suffix_link=None):   *         self.phrase = phrase   *         self.phrase_location = phrase_location             # <<<<<<<<<<<<<< @@ -36775,7 +37547,7 @@ static int __pyx_pf_3_sa_16ExtendedTrieNode___cinit__(struct __pyx_obj_3_sa_Exte    __Pyx_DECREF(__pyx_v_self->phrase_location);    __pyx_v_self->phrase_location = __pyx_v_phrase_location; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":60 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":60   *         self.phrase = phrase   *         self.phrase_location = phrase_location   *         self.suffix_link = suffix_link             # <<<<<<<<<<<<<< @@ -36804,7 +37576,7 @@ static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(PyObject *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":53 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":53   *    * cdef class ExtendedTrieNode(TrieNode):   *     cdef public phrase             # <<<<<<<<<<<<<< @@ -36891,7 +37663,7 @@ static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":54 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":54   * cdef class ExtendedTrieNode(TrieNode):   *     cdef public phrase   *     cdef public phrase_location             # <<<<<<<<<<<<<< @@ -36978,7 +37750,7 @@ static PyObject *__pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":55 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":55   *     cdef public phrase   *     cdef public phrase_location   *     cdef public suffix_link             # <<<<<<<<<<<<<< @@ -37058,13 +37830,16 @@ static int __pyx_pf_3_sa_16ExtendedTrieNode_11suffix_link_4__del__(struct __pyx_  static int __pyx_pw_3_sa_9TrieTable_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/  static int __pyx_pw_3_sa_9TrieTable_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_extended = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__extended,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__extended,0};      PyObject* values[1] = {0}; -    values[0] = __pyx_k_99; +    values[0] = __pyx_k_101;      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args;        const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); @@ -37106,7 +37881,7 @@ static int __pyx_pw_3_sa_9TrieTable_1__cinit__(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":67 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":67   *     cdef public int count   *     cdef public root   *     def __cinit__(self, extended=False):             # <<<<<<<<<<<<<< @@ -37125,7 +37900,7 @@ static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":68 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":68   *     cdef public root   *     def __cinit__(self, extended=False):   *         self.count = 0             # <<<<<<<<<<<<<< @@ -37134,7 +37909,7 @@ static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *_   */    __pyx_v_self->count = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":69 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":69   *     def __cinit__(self, extended=False):   *         self.count = 0   *         self.extended = extended             # <<<<<<<<<<<<<< @@ -37144,7 +37919,7 @@ static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *_    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_extended); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_self->extended = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":70 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":70   *         self.count = 0   *         self.extended = extended   *         if extended:             # <<<<<<<<<<<<<< @@ -37154,7 +37929,7 @@ static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *_    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_extended); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":71 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":71   *         self.extended = extended   *         if extended:   *             self.root = ExtendedTrieNode()             # <<<<<<<<<<<<<< @@ -37172,7 +37947,7 @@ static int __pyx_pf_3_sa_9TrieTable___cinit__(struct __pyx_obj_3_sa_TrieTable *_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":73 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":73   *             self.root = ExtendedTrieNode()   *         else:   *             self.root = TrieNode()             # <<<<<<<<<<<<<< @@ -37211,7 +37986,7 @@ static PyObject *__pyx_pw_3_sa_9TrieTable_8extended_1__get__(PyObject *__pyx_v_s    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":64 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":64   *    * cdef class TrieTable:   *     cdef public int extended             # <<<<<<<<<<<<<< @@ -37289,7 +38064,7 @@ static PyObject *__pyx_pw_3_sa_9TrieTable_5count_1__get__(PyObject *__pyx_v_self    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":65 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":65   * cdef class TrieTable:   *     cdef public int extended   *     cdef public int count             # <<<<<<<<<<<<<< @@ -37367,7 +38142,7 @@ static PyObject *__pyx_pw_3_sa_9TrieTable_4root_1__get__(PyObject *__pyx_v_self)    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":66 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":66   *     cdef public int extended   *     cdef public int count   *     cdef public root             # <<<<<<<<<<<<<< @@ -37443,7 +38218,7 @@ static int __pyx_pf_3_sa_9TrieTable_4root_4__del__(struct __pyx_obj_3_sa_TrieTab    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":93 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":93   *    *     # returns true if sent_id is contained   *     cdef int contains(self, int sent_id):             # <<<<<<<<<<<<<< @@ -37456,7 +38231,7 @@ static int __pyx_f_3_sa_14PhraseLocation_contains(CYTHON_UNUSED struct __pyx_obj    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("contains", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":94 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":94   *     # returns true if sent_id is contained   *     cdef int contains(self, int sent_id):   *         return 1             # <<<<<<<<<<<<<< @@ -37481,14 +38256,17 @@ static int __pyx_pw_3_sa_14PhraseLocation_1__cinit__(PyObject *__pyx_v_self, PyO    int __pyx_v_arr_high;    PyObject *__pyx_v_arr = 0;    int __pyx_v_num_subpatterns; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa_low,&__pyx_n_s__sa_high,&__pyx_n_s__arr_low,&__pyx_n_s__arr_high,&__pyx_n_s__arr,&__pyx_n_s__num_subpatterns,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sa_low,&__pyx_n_s__sa_high,&__pyx_n_s__arr_low,&__pyx_n_s__arr_high,&__pyx_n_s__arr,&__pyx_n_s__num_subpatterns,0};      PyObject* values[6] = {0,0,0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":97 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":97   *    *     def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,   *             arr=None, int num_subpatterns=1):             # <<<<<<<<<<<<<< @@ -37545,26 +38323,6 @@ static int __pyx_pw_3_sa_14PhraseLocation_1__cinit__(PyObject *__pyx_v_self, PyO        if (unlikely(kw_args > 0)) {          if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        } -      if (values[0]) { -      } else { -        __pyx_v_sa_low = ((int)-1); -      } -      if (values[1]) { -      } else { -        __pyx_v_sa_high = ((int)-1); -      } -      if (values[2]) { -      } else { -        __pyx_v_arr_low = ((int)-1); -      } -      if (values[3]) { -      } else { -        __pyx_v_arr_high = ((int)-1); -      } -      if (values[5]) { -      } else { -        __pyx_v_num_subpatterns = ((int)1); -      }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) {          case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); @@ -37617,7 +38375,7 @@ static int __pyx_pw_3_sa_14PhraseLocation_1__cinit__(PyObject *__pyx_v_self, PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":96 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":96   *         return 1   *    *     def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,             # <<<<<<<<<<<<<< @@ -37633,7 +38391,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":98 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":98   *     def __cinit__(self, int sa_low=-1, int sa_high=-1, int arr_low=-1, int arr_high=-1,   *             arr=None, int num_subpatterns=1):   *         self.sa_low = sa_low             # <<<<<<<<<<<<<< @@ -37642,7 +38400,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase   */    __pyx_v_self->sa_low = __pyx_v_sa_low; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":99 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":99   *             arr=None, int num_subpatterns=1):   *         self.sa_low = sa_low   *         self.sa_high = sa_high             # <<<<<<<<<<<<<< @@ -37651,7 +38409,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase   */    __pyx_v_self->sa_high = __pyx_v_sa_high; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":100 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":100   *         self.sa_low = sa_low   *         self.sa_high = sa_high   *         self.arr_low = arr_low             # <<<<<<<<<<<<<< @@ -37660,7 +38418,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase   */    __pyx_v_self->arr_low = __pyx_v_arr_low; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":101 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":101   *         self.sa_high = sa_high   *         self.arr_low = arr_low   *         self.arr_high = arr_high             # <<<<<<<<<<<<<< @@ -37669,7 +38427,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase   */    __pyx_v_self->arr_high = __pyx_v_arr_high; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":102 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":102   *         self.arr_low = arr_low   *         self.arr_high = arr_high   *         self.arr = arr             # <<<<<<<<<<<<<< @@ -37683,7 +38441,7 @@ static int __pyx_pf_3_sa_14PhraseLocation___cinit__(struct __pyx_obj_3_sa_Phrase    __Pyx_DECREF(((PyObject *)__pyx_v_self->arr));    __pyx_v_self->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_v_arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":103 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":103   *         self.arr_high = arr_high   *         self.arr = arr   *         self.num_subpatterns = num_subpatterns             # <<<<<<<<<<<<<< @@ -37707,11 +38465,14 @@ static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *_  static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    int __pyx_v_sample_size;    struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sample_size,&__pyx_n_s__fsarray,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__sample_size,&__pyx_n_s__fsarray,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -37725,12 +38486,10 @@ static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sample_size); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sample_size)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -37765,7 +38524,7 @@ static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":113 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":113   *     cdef IntList sa   *    *     def __cinit__(self, int sample_size, SuffixArray fsarray):             # <<<<<<<<<<<<<< @@ -37776,8 +38535,8 @@ static int __pyx_pw_3_sa_7Sampler_1__cinit__(PyObject *__pyx_v_self, PyObject *_  static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx_v_self, int __pyx_v_sample_size, struct __pyx_obj_3_sa_SuffixArray *__pyx_v_fsarray) {    int __pyx_r;    __Pyx_RefNannyDeclarations -  int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; +  PyObject *__pyx_t_1 = NULL; +  int __pyx_t_2;    PyObject *__pyx_t_3 = NULL;    PyObject *__pyx_t_4 = NULL;    int __pyx_lineno = 0; @@ -37785,7 +38544,7 @@ static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":114 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":114   *    *     def __cinit__(self, int sample_size, SuffixArray fsarray):   *         self.sample_size = sample_size             # <<<<<<<<<<<<<< @@ -37794,83 +38553,85 @@ static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx   */    __pyx_v_self->sample_size = __pyx_v_sample_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":115 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":115   *     def __cinit__(self, int sample_size, SuffixArray fsarray):   *         self.sample_size = sample_size   *         self.sa = fsarray.sa             # <<<<<<<<<<<<<<   *         if sample_size > 0:   *             logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_fsarray->sa)); -  __Pyx_GIVEREF(((PyObject *)__pyx_v_fsarray->sa)); +  __pyx_t_1 = ((PyObject *)__pyx_v_fsarray->sa); +  __Pyx_INCREF(__pyx_t_1); +  __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->sa);    __Pyx_DECREF(((PyObject *)__pyx_v_self->sa)); -  __pyx_v_self->sa = __pyx_v_fsarray->sa; +  __pyx_v_self->sa = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":116 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":116   *         self.sample_size = sample_size   *         self.sa = fsarray.sa   *         if sample_size > 0:             # <<<<<<<<<<<<<<   *             logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)   *         else:   */ -  __pyx_t_1 = (__pyx_v_sample_size > 0); -  if (__pyx_t_1) { +  __pyx_t_2 = ((__pyx_v_sample_size > 0) != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":117 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":117   *         self.sa = fsarray.sa   *         if sample_size > 0:   *             logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)             # <<<<<<<<<<<<<<   *         else:   *             logger.info("Sampling strategy: no sampling")   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __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_sample_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_1 = PyInt_FromLong(__pyx_v_sample_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __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[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_100)); -    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_100)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_100)); -    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); -    __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_102)); +    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_102)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_102)); +    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); +    __Pyx_GIVEREF(__pyx_t_1); +    __pyx_t_1 = 0; +    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      goto __pyx_L3;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":119 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":119   *             logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)   *         else:   *             logger.info("Sampling strategy: no sampling")             # <<<<<<<<<<<<<<   *    *     def sample(self, PhraseLocation phrase_location):   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_102), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __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_4, ((PyObject *)__pyx_k_tuple_104), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __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_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    }    __pyx_L3:;    __pyx_r = 0;    goto __pyx_L0;    __pyx_L1_error:; -  __Pyx_XDECREF(__pyx_t_2); +  __Pyx_XDECREF(__pyx_t_1);    __Pyx_XDECREF(__pyx_t_3);    __Pyx_XDECREF(__pyx_t_4);    __Pyx_AddTraceback("_sa.Sampler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -37884,6 +38645,9 @@ static int __pyx_pf_3_sa_7Sampler___cinit__(struct __pyx_obj_3_sa_Sampler *__pyx  static PyObject *__pyx_pw_3_sa_7Sampler_3sample(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase_location); /*proto*/  static char __pyx_doc_3_sa_7Sampler_2sample[] = "Returns a sample of the locations for\n        the phrase.    If there are less than self.sample_size\n        locations, return all of them; otherwise, return\n        up to self.sample_size locations.    In the latter case,\n        we choose to sample UNIFORMLY -- that is, the locations\n        are chosen at uniform intervals over the entire set, rather\n        than randomly.    This makes the algorithm deterministic, which\n        is good for things like MERT";  static PyObject *__pyx_pw_3_sa_7Sampler_3sample(PyObject *__pyx_v_self, PyObject *__pyx_v_phrase_location) { +  CYTHON_UNUSED int __pyx_lineno = 0; +  CYTHON_UNUSED const char *__pyx_filename = NULL; +  CYTHON_UNUSED int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("sample (wrapper)", 0); @@ -37897,7 +38661,7 @@ static PyObject *__pyx_pw_3_sa_7Sampler_3sample(PyObject *__pyx_v_self, PyObject    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":121 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":121   *             logger.info("Sampling strategy: no sampling")   *    *     def sample(self, PhraseLocation phrase_location):             # <<<<<<<<<<<<<< @@ -37924,7 +38688,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("sample", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":134 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":134   *         cdef int num_locations, val, j   *    *         sample = IntList()             # <<<<<<<<<<<<<< @@ -37936,7 +38700,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_    __pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":135 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":135   *    *         sample = IntList()   *         if phrase_location.arr is None:             # <<<<<<<<<<<<<< @@ -37944,9 +38708,10 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   *             if self.sample_size == -1 or num_locations <= self.sample_size:   */    __pyx_t_2 = (((PyObject *)__pyx_v_phrase_location->arr) == Py_None); -  if (__pyx_t_2) { +  __pyx_t_3 = (__pyx_t_2 != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":136 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":136   *         sample = IntList()   *         if phrase_location.arr is None:   *             num_locations = phrase_location.sa_high - phrase_location.sa_low             # <<<<<<<<<<<<<< @@ -37955,23 +38720,23 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   */      __pyx_v_num_locations = (__pyx_v_phrase_location->sa_high - __pyx_v_phrase_location->sa_low); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":137 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":137   *         if phrase_location.arr is None:   *             num_locations = phrase_location.sa_high - phrase_location.sa_low   *             if self.sample_size == -1 or num_locations <= self.sample_size:             # <<<<<<<<<<<<<<   *                 sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)   *             else:   */ -    __pyx_t_2 = (__pyx_v_self->sample_size == -1); -    if (!__pyx_t_2) { -      __pyx_t_3 = (__pyx_v_num_locations <= __pyx_v_self->sample_size); -      __pyx_t_4 = __pyx_t_3; -    } else { +    __pyx_t_3 = ((__pyx_v_self->sample_size == -1) != 0); +    if (!__pyx_t_3) { +      __pyx_t_2 = ((__pyx_v_num_locations <= __pyx_v_self->sample_size) != 0);        __pyx_t_4 = __pyx_t_2; +    } else { +      __pyx_t_4 = __pyx_t_3;      }      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":138 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":138   *             num_locations = phrase_location.sa_high - phrase_location.sa_low   *             if self.sample_size == -1 or num_locations <= self.sample_size:   *                 sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)             # <<<<<<<<<<<<<< @@ -37983,7 +38748,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":140 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":140   *                 sample._extend_arr(self.sa.arr + phrase_location.sa_low, num_locations)   *             else:   *                 stepsize = float(num_locations)/float(self.sample_size)             # <<<<<<<<<<<<<< @@ -37991,21 +38756,28 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   *                 while i < phrase_location.sa_high and sample.len < self.sample_size:   */        if (unlikely(((double)__pyx_v_self->sample_size) == 0)) { +        #ifdef WITH_THREAD +        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +        #endif          PyErr_Format(PyExc_ZeroDivisionError, "float division"); +        #ifdef WITH_THREAD +        PyGILState_Release(__pyx_gilstate_save); +        #endif          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }        __pyx_v_stepsize = (((double)__pyx_v_num_locations) / ((double)__pyx_v_self->sample_size)); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":141 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":141   *             else:   *                 stepsize = float(num_locations)/float(self.sample_size)   *                 i = phrase_location.sa_low             # <<<<<<<<<<<<<<   *                 while i < phrase_location.sa_high and sample.len < self.sample_size:   *                     '''Note: int(i) not guaranteed to have the desired   */ -      __pyx_v_i = __pyx_v_phrase_location->sa_low; +      __pyx_t_5 = __pyx_v_phrase_location->sa_low; +      __pyx_v_i = __pyx_t_5; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":142 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":142   *                 stepsize = float(num_locations)/float(self.sample_size)   *                 i = phrase_location.sa_low   *                 while i < phrase_location.sa_high and sample.len < self.sample_size:             # <<<<<<<<<<<<<< @@ -38013,26 +38785,26 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   *                     effect, according to the python documentation'''   */        while (1) { -        __pyx_t_4 = (__pyx_v_i < __pyx_v_phrase_location->sa_high); +        __pyx_t_4 = ((__pyx_v_i < __pyx_v_phrase_location->sa_high) != 0);          if (__pyx_t_4) { -          __pyx_t_2 = (__pyx_v_sample->len < __pyx_v_self->sample_size); -          __pyx_t_3 = __pyx_t_2; +          __pyx_t_3 = ((__pyx_v_sample->len < __pyx_v_self->sample_size) != 0); +          __pyx_t_2 = __pyx_t_3;          } else { -          __pyx_t_3 = __pyx_t_4; +          __pyx_t_2 = __pyx_t_4;          } -        if (!__pyx_t_3) break; +        if (!__pyx_t_2) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":145 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":145   *                     '''Note: int(i) not guaranteed to have the desired   *                     effect, according to the python documentation'''   *                     if fmod(i,1.0) > 0.5:             # <<<<<<<<<<<<<<   *                         val = int(ceil(i))   *                     else:   */ -        __pyx_t_3 = (fmod(__pyx_v_i, 1.0) > 0.5); -        if (__pyx_t_3) { +        __pyx_t_2 = ((fmod(__pyx_v_i, 1.0) > 0.5) != 0); +        if (__pyx_t_2) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":146 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":146   *                     effect, according to the python documentation'''   *                     if fmod(i,1.0) > 0.5:   *                         val = int(ceil(i))             # <<<<<<<<<<<<<< @@ -38044,7 +38816,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":148 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":148   *                         val = int(ceil(i))   *                     else:   *                         val = int(floor(i))             # <<<<<<<<<<<<<< @@ -38055,7 +38827,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_          }          __pyx_L7:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":149 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":149   *                     else:   *                         val = int(floor(i))   *                     sample._append(self.sa.arr[val])             # <<<<<<<<<<<<<< @@ -38064,7 +38836,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   */          ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sample->__pyx_vtab)->_append(__pyx_v_sample, (__pyx_v_self->sa->arr[__pyx_v_val])); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":150 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":150   *                         val = int(floor(i))   *                     sample._append(self.sa.arr[val])   *                     i = i + stepsize             # <<<<<<<<<<<<<< @@ -38079,7 +38851,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":152 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":152   *                     i = i + stepsize   *         else:   *             num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns             # <<<<<<<<<<<<<< @@ -38088,46 +38860,60 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   */      __pyx_t_5 = (__pyx_v_phrase_location->arr_high - __pyx_v_phrase_location->arr_low);      if (unlikely(__pyx_v_phrase_location->num_subpatterns == 0)) { +      #ifdef WITH_THREAD +      PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +      #endif        PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +      #ifdef WITH_THREAD +      PyGILState_Release(__pyx_gilstate_save); +      #endif        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      }      else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_phrase_location->num_subpatterns == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_5))) { +      #ifdef WITH_THREAD +      PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +      #endif        PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +      #ifdef WITH_THREAD +      PyGILState_Release(__pyx_gilstate_save); +      #endif        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      }      __pyx_v_num_locations = __Pyx_div_int(__pyx_t_5, __pyx_v_phrase_location->num_subpatterns); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":153 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":153   *         else:   *             num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns   *             if self.sample_size == -1 or num_locations <= self.sample_size:             # <<<<<<<<<<<<<<   *                 sample = phrase_location.arr   *             else:   */ -    __pyx_t_3 = (__pyx_v_self->sample_size == -1); -    if (!__pyx_t_3) { -      __pyx_t_4 = (__pyx_v_num_locations <= __pyx_v_self->sample_size); -      __pyx_t_2 = __pyx_t_4; +    __pyx_t_2 = ((__pyx_v_self->sample_size == -1) != 0); +    if (!__pyx_t_2) { +      __pyx_t_4 = ((__pyx_v_num_locations <= __pyx_v_self->sample_size) != 0); +      __pyx_t_3 = __pyx_t_4;      } else { -      __pyx_t_2 = __pyx_t_3; +      __pyx_t_3 = __pyx_t_2;      } -    if (__pyx_t_2) { +    if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":154 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":154   *             num_locations = (phrase_location.arr_high - phrase_location.arr_low) / phrase_location.num_subpatterns   *             if self.sample_size == -1 or num_locations <= self.sample_size:   *                 sample = phrase_location.arr             # <<<<<<<<<<<<<<   *             else:   *                 stepsize = float(num_locations)/float(self.sample_size)   */ -      __Pyx_INCREF(((PyObject *)__pyx_v_phrase_location->arr)); +      __pyx_t_1 = ((PyObject *)__pyx_v_phrase_location->arr); +      __Pyx_INCREF(__pyx_t_1);        __Pyx_DECREF(((PyObject *)__pyx_v_sample)); -      __pyx_v_sample = __pyx_v_phrase_location->arr; +      __pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1); +      __pyx_t_1 = 0;        goto __pyx_L8;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":156 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":156   *                 sample = phrase_location.arr   *             else:   *                 stepsize = float(num_locations)/float(self.sample_size)             # <<<<<<<<<<<<<< @@ -38135,21 +38921,28 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   *                 while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:   */        if (unlikely(((double)__pyx_v_self->sample_size) == 0)) { +        #ifdef WITH_THREAD +        PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +        #endif          PyErr_Format(PyExc_ZeroDivisionError, "float division"); +        #ifdef WITH_THREAD +        PyGILState_Release(__pyx_gilstate_save); +        #endif          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        }        __pyx_v_stepsize = (((double)__pyx_v_num_locations) / ((double)__pyx_v_self->sample_size)); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":157 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":157   *             else:   *                 stepsize = float(num_locations)/float(self.sample_size)   *                 i = phrase_location.arr_low             # <<<<<<<<<<<<<<   *                 while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:   *                     '''Note: int(i) not guaranteed to have the desired   */ -      __pyx_v_i = __pyx_v_phrase_location->arr_low; +      __pyx_t_5 = __pyx_v_phrase_location->arr_low; +      __pyx_v_i = __pyx_t_5; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":158 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":158   *                 stepsize = float(num_locations)/float(self.sample_size)   *                 i = phrase_location.arr_low   *                 while i < num_locations and sample.len < self.sample_size * phrase_location.num_subpatterns:             # <<<<<<<<<<<<<< @@ -38157,26 +38950,26 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   *                     effect, according to the python documentation'''   */        while (1) { -        __pyx_t_2 = (__pyx_v_i < __pyx_v_num_locations); -        if (__pyx_t_2) { -          __pyx_t_3 = (__pyx_v_sample->len < (__pyx_v_self->sample_size * __pyx_v_phrase_location->num_subpatterns)); -          __pyx_t_4 = __pyx_t_3; -        } else { +        __pyx_t_3 = ((__pyx_v_i < __pyx_v_num_locations) != 0); +        if (__pyx_t_3) { +          __pyx_t_2 = ((__pyx_v_sample->len < (__pyx_v_self->sample_size * __pyx_v_phrase_location->num_subpatterns)) != 0);            __pyx_t_4 = __pyx_t_2; +        } else { +          __pyx_t_4 = __pyx_t_3;          }          if (!__pyx_t_4) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":161 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":161   *                     '''Note: int(i) not guaranteed to have the desired   *                     effect, according to the python documentation'''   *                     if fmod(i,1.0) > 0.5:             # <<<<<<<<<<<<<<   *                         val = int(ceil(i))   *                     else:   */ -        __pyx_t_4 = (fmod(__pyx_v_i, 1.0) > 0.5); +        __pyx_t_4 = ((fmod(__pyx_v_i, 1.0) > 0.5) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":162 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":162   *                     effect, according to the python documentation'''   *                     if fmod(i,1.0) > 0.5:   *                         val = int(ceil(i))             # <<<<<<<<<<<<<< @@ -38188,7 +38981,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":164 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":164   *                         val = int(ceil(i))   *                     else:   *                         val = int(floor(i))             # <<<<<<<<<<<<<< @@ -38199,7 +38992,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_          }          __pyx_L11:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":165 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":165   *                     else:   *                         val = int(floor(i))   *                     j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)             # <<<<<<<<<<<<<< @@ -38208,7 +39001,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   */          __pyx_v_j = (__pyx_v_phrase_location->arr_low + (__pyx_v_val * __pyx_v_phrase_location->num_subpatterns)); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":166 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":166   *                         val = int(floor(i))   *                     j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)   *                     sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)             # <<<<<<<<<<<<<< @@ -38217,7 +39010,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_   */          ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_sample->__pyx_vtab)->_extend_arr(__pyx_v_sample, (__pyx_v_phrase_location->arr->arr + __pyx_v_j), __pyx_v_phrase_location->num_subpatterns); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":167 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":167   *                     j = phrase_location.arr_low + (val*phrase_location.num_subpatterns)   *                     sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)   *                     i = i + stepsize             # <<<<<<<<<<<<<< @@ -38231,7 +39024,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":168 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":168   *                     sample._extend_arr(phrase_location.arr.arr + j, phrase_location.num_subpatterns)   *                     i = i + stepsize   *         return sample             # <<<<<<<<<<<<<< @@ -38256,7 +39049,7 @@ static PyObject *__pyx_pf_3_sa_7Sampler_2sample(struct __pyx_obj_3_sa_Sampler *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":180 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":180   *    *    * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):             # <<<<<<<<<<<<<< @@ -38268,7 +39061,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("assign_matching", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":181 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":181   *    * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):   *     m.arr = arr             # <<<<<<<<<<<<<< @@ -38277,7 +39070,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m   */    __pyx_v_m->arr = __pyx_v_arr; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":182 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":182   * cdef void assign_matching(Matching* m, int* arr, int start, int step, int* sent_id_arr):   *     m.arr = arr   *     m.start = start             # <<<<<<<<<<<<<< @@ -38286,7 +39079,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m   */    __pyx_v_m->start = __pyx_v_start; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":183 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":183   *     m.arr = arr   *     m.start = start   *     m.end = start + step             # <<<<<<<<<<<<<< @@ -38295,7 +39088,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m   */    __pyx_v_m->end = (__pyx_v_start + __pyx_v_step); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":184 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":184   *     m.start = start   *     m.end = start + step   *     m.sent_id = sent_id_arr[arr[start]]             # <<<<<<<<<<<<<< @@ -38304,7 +39097,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m   */    __pyx_v_m->sent_id = (__pyx_v_sent_id_arr[(__pyx_v_arr[__pyx_v_start])]); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":185   *     m.end = start + step   *     m.sent_id = sent_id_arr[arr[start]]   *     m.size = step             # <<<<<<<<<<<<<< @@ -38316,7 +39109,7 @@ static void __pyx_f_3_sa_assign_matching(struct __pyx_t_3_sa_Matching *__pyx_v_m    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":188 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":188   *    *    * cdef int* append_combined_matching(int* arr, Matching* loc1, Matching* loc2,             # <<<<<<<<<<<<<< @@ -38333,7 +39126,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx    int __pyx_t_2;    __Pyx_RefNannySetupContext("append_combined_matching", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":192 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":192   *     cdef int i, new_len   *    *     new_len = result_len[0] + num_subpatterns             # <<<<<<<<<<<<<< @@ -38342,7 +39135,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx   */    __pyx_v_new_len = ((__pyx_v_result_len[0]) + __pyx_v_num_subpatterns); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":193 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":193   *    *     new_len = result_len[0] + num_subpatterns   *     arr = <int*> realloc(arr, new_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -38351,7 +39144,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx   */    __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":195 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":195   *     arr = <int*> realloc(arr, new_len*sizeof(int))   *    *     for i from 0 <= i < loc1.size:             # <<<<<<<<<<<<<< @@ -38361,7 +39154,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx    __pyx_t_1 = __pyx_v_loc1->size;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":196 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":196   *    *     for i from 0 <= i < loc1.size:   *         arr[result_len[0]+i] = loc1.arr[loc1.start+i]             # <<<<<<<<<<<<<< @@ -38371,17 +39164,17 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx      (__pyx_v_arr[((__pyx_v_result_len[0]) + __pyx_v_i)]) = (__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":197 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":197   *     for i from 0 <= i < loc1.size:   *         arr[result_len[0]+i] = loc1.arr[loc1.start+i]   *     if num_subpatterns > loc1.size:             # <<<<<<<<<<<<<<   *         arr[new_len-1] = loc2.arr[loc2.end-1]   *     result_len[0] = new_len   */ -  __pyx_t_2 = (__pyx_v_num_subpatterns > __pyx_v_loc1->size); +  __pyx_t_2 = ((__pyx_v_num_subpatterns > __pyx_v_loc1->size) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":198 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":198   *         arr[result_len[0]+i] = loc1.arr[loc1.start+i]   *     if num_subpatterns > loc1.size:   *         arr[new_len-1] = loc2.arr[loc2.end-1]             # <<<<<<<<<<<<<< @@ -38393,7 +39186,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":199 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":199   *     if num_subpatterns > loc1.size:   *         arr[new_len-1] = loc2.arr[loc2.end-1]   *     result_len[0] = new_len             # <<<<<<<<<<<<<< @@ -38402,7 +39195,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx   */    (__pyx_v_result_len[0]) = __pyx_v_new_len; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":200 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":200   *         arr[new_len-1] = loc2.arr[loc2.end-1]   *     result_len[0] = new_len   *     return arr             # <<<<<<<<<<<<<< @@ -38418,7 +39211,7 @@ static int *__pyx_f_3_sa_append_combined_matching(int *__pyx_v_arr, struct __pyx    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":203 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":203   *    *    * cdef int* extend_arr(int* arr, int* arr_len, int* appendix, int appendix_len):             # <<<<<<<<<<<<<< @@ -38432,7 +39225,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("extend_arr", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":206 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":206   *     cdef int new_len   *    *     new_len = arr_len[0] + appendix_len             # <<<<<<<<<<<<<< @@ -38441,7 +39234,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int   */    __pyx_v_new_len = ((__pyx_v_arr_len[0]) + __pyx_v_appendix_len); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":207 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":207   *    *     new_len = arr_len[0] + appendix_len   *     arr = <int*> realloc(arr, new_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -38450,7 +39243,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int   */    __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":208 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":208   *     new_len = arr_len[0] + appendix_len   *     arr = <int*> realloc(arr, new_len*sizeof(int))   *     memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -38459,7 +39252,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int   */    memcpy((__pyx_v_arr + (__pyx_v_arr_len[0])), __pyx_v_appendix, (__pyx_v_appendix_len * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":209 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":209   *     arr = <int*> realloc(arr, new_len*sizeof(int))   *     memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))   *     arr_len[0] = new_len             # <<<<<<<<<<<<<< @@ -38468,7 +39261,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int   */    (__pyx_v_arr_len[0]) = __pyx_v_new_len; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":210 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":210   *     memcpy(arr+arr_len[0], appendix, appendix_len*sizeof(int))   *     arr_len[0] = new_len   *     return arr             # <<<<<<<<<<<<<< @@ -38484,7 +39277,7 @@ static int *__pyx_f_3_sa_extend_arr(int *__pyx_v_arr, int *__pyx_v_arr_len, int    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":212 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":212   *     return arr   *    * cdef int median(int low, int high, int step):             # <<<<<<<<<<<<<< @@ -38501,7 +39294,7 @@ static int __pyx_f_3_sa_median(int __pyx_v_low, int __pyx_v_high, int __pyx_v_st    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("median", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":213 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":213   *    * cdef int median(int low, int high, int step):   *     return low + (((high - low)/step)/2)*step             # <<<<<<<<<<<<<< @@ -38510,11 +39303,23 @@ static int __pyx_f_3_sa_median(int __pyx_v_low, int __pyx_v_high, int __pyx_v_st   */    __pyx_t_1 = (__pyx_v_high - __pyx_v_low);    if (unlikely(__pyx_v_step == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_1))) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __pyx_r = (__pyx_v_low + (__Pyx_div_long(__Pyx_div_int(__pyx_t_1, __pyx_v_step), 2) * __pyx_v_step)); @@ -38530,7 +39335,7 @@ static int __pyx_f_3_sa_median(int __pyx_v_low, int __pyx_v_high, int __pyx_v_st    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":216 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":216   *    *    * cdef void find_comparable_matchings(int low, int high, int* arr, int step, int loc, int* loc_minus, int* loc_plus):             # <<<<<<<<<<<<<< @@ -38545,7 +39350,7 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_    int __pyx_t_3;    __Pyx_RefNannySetupContext("find_comparable_matchings", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":220 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":220   *     # in which all matchings have the same first index as the one   *     # starting at loc   *     loc_plus[0] = loc + step             # <<<<<<<<<<<<<< @@ -38554,7 +39359,7 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_   */    (__pyx_v_loc_plus[0]) = (__pyx_v_loc + __pyx_v_step); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":221 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":221   *     # starting at loc   *     loc_plus[0] = loc + step   *     while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:             # <<<<<<<<<<<<<< @@ -38562,16 +39367,16 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_   *     loc_minus[0] = loc   */    while (1) { -    __pyx_t_1 = ((__pyx_v_loc_plus[0]) < __pyx_v_high); +    __pyx_t_1 = (((__pyx_v_loc_plus[0]) < __pyx_v_high) != 0);      if (__pyx_t_1) { -      __pyx_t_2 = ((__pyx_v_arr[(__pyx_v_loc_plus[0])]) == (__pyx_v_arr[__pyx_v_loc])); +      __pyx_t_2 = (((__pyx_v_arr[(__pyx_v_loc_plus[0])]) == (__pyx_v_arr[__pyx_v_loc])) != 0);        __pyx_t_3 = __pyx_t_2;      } else {        __pyx_t_3 = __pyx_t_1;      }      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":222 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":222   *     loc_plus[0] = loc + step   *     while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:   *         loc_plus[0] = loc_plus[0] + step             # <<<<<<<<<<<<<< @@ -38581,7 +39386,7 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_      (__pyx_v_loc_plus[0]) = ((__pyx_v_loc_plus[0]) + __pyx_v_step);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":223 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":223   *     while loc_plus[0] < high and arr[loc_plus[0]] == arr[loc]:   *         loc_plus[0] = loc_plus[0] + step   *     loc_minus[0] = loc             # <<<<<<<<<<<<<< @@ -38590,7 +39395,7 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_   */    (__pyx_v_loc_minus[0]) = __pyx_v_loc; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":224 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":224   *         loc_plus[0] = loc_plus[0] + step   *     loc_minus[0] = loc   *     while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:             # <<<<<<<<<<<<<< @@ -38598,16 +39403,16 @@ static void __pyx_f_3_sa_find_comparable_matchings(int __pyx_v_low, int __pyx_v_   *    */    while (1) { -    __pyx_t_3 = (((__pyx_v_loc_minus[0]) - __pyx_v_step) >= __pyx_v_low); +    __pyx_t_3 = ((((__pyx_v_loc_minus[0]) - __pyx_v_step) >= __pyx_v_low) != 0);      if (__pyx_t_3) { -      __pyx_t_1 = ((__pyx_v_arr[((__pyx_v_loc_minus[0]) - __pyx_v_step)]) == (__pyx_v_arr[__pyx_v_loc])); +      __pyx_t_1 = (((__pyx_v_arr[((__pyx_v_loc_minus[0]) - __pyx_v_step)]) == (__pyx_v_arr[__pyx_v_loc])) != 0);        __pyx_t_2 = __pyx_t_1;      } else {        __pyx_t_2 = __pyx_t_3;      }      if (!__pyx_t_2) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":225 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":225   *     loc_minus[0] = loc   *     while loc_minus[0]-step >= low and arr[loc_minus[0]-step] == arr[loc]:   *         loc_minus[0] = loc_minus[0] - step             # <<<<<<<<<<<<<< @@ -38644,14 +39449,17 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_    int __pyx_v_use_baeza_yates;    int __pyx_v_use_collocations;    int __pyx_v_use_index; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alignment,&__pyx_n_s__by_slack_factor,&__pyx_n_s__category,&__pyx_n_s__max_chunks,&__pyx_n_s__max_initial_size,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s__max_target_chunks,&__pyx_n_s__max_target_length,&__pyx_n_s__min_gap_size,&__pyx_n_s__precompute_file,&__pyx_n_s_70,&__pyx_n_s__precompute_rank,&__pyx_n_s_103,&__pyx_n_s_104,&__pyx_n_s_71,&__pyx_n_s__train_min_gap_size,&__pyx_n_s__tight_phrases,&__pyx_n_s__use_baeza_yates,&__pyx_n_s__use_collocations,&__pyx_n_s__use_index,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    int __pyx_r;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__alignment,&__pyx_n_s__by_slack_factor,&__pyx_n_s__category,&__pyx_n_s__max_chunks,&__pyx_n_s__max_initial_size,&__pyx_n_s__max_length,&__pyx_n_s__max_nonterminals,&__pyx_n_s__max_target_chunks,&__pyx_n_s__max_target_length,&__pyx_n_s__min_gap_size,&__pyx_n_s__precompute_file,&__pyx_n_s_72,&__pyx_n_s__precompute_rank,&__pyx_n_s_105,&__pyx_n_s_106,&__pyx_n_s_73,&__pyx_n_s__train_min_gap_size,&__pyx_n_s__tight_phrases,&__pyx_n_s__use_baeza_yates,&__pyx_n_s__use_collocations,&__pyx_n_s__use_index,0};      PyObject* values[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":296 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":296   *             char* category="[X]",   *             # maximum number of contiguous chunks of terminal symbols in RHS of a rule. If None, defaults to max_nonterminals+1   *             max_chunks=None,             # <<<<<<<<<<<<<< @@ -38660,7 +39468,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_   */      values[3] = ((PyObject *)Py_None); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":304 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":304   *             unsigned max_nonterminals=2,   *             # maximum number of contiguous chunks of terminal symbols in target-side RHS of a rule. If None, defaults to max_nonterminals+1   *             max_target_chunks=None,             # <<<<<<<<<<<<<< @@ -38669,7 +39477,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_   */      values[7] = ((PyObject *)Py_None); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":306 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":306   *             max_target_chunks=None,   *             # maximum number of target side symbols (both T and NT) allowed in a rule. If None, defaults to max_initial_size   *             max_target_length=None,             # <<<<<<<<<<<<<< @@ -38678,7 +39486,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_   */      values[8] = ((PyObject *)Py_None); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":310 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":310   *             unsigned min_gap_size=2,   *             # filename of file containing precomputed collocations   *             precompute_file=None,             # <<<<<<<<<<<<<< @@ -38717,8 +39525,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1:          if (kw_args > 0) { @@ -38772,7 +39579,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_          }          case 11:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_70); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_72);            if (value) { values[11] = value; kw_args--; }          }          case 12: @@ -38782,17 +39589,17 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_          }          case 13:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_103); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_105);            if (value) { values[13] = value; kw_args--; }          }          case 14:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_104); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_106);            if (value) { values[14] = value; kw_args--; }          }          case 15:          if (kw_args > 0) { -          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_71); +          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_73);            if (value) { values[15] = value; kw_args--; }          }          case 16: @@ -38824,126 +39631,6 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        if (unlikely(kw_args > 0)) {          if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        } -      if (values[1]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":292 - *             Alignment alignment, - *             # parameter for double-binary search; doesn't seem to matter much - *             float by_slack_factor=1.0,             # <<<<<<<<<<<<<< - *             # name of generic nonterminal used by Hiero - *             char* category="[X]", - */ -        __pyx_v_by_slack_factor = ((float)1.0); -      } -      if (values[2]) { -      } else { -        __pyx_v_category = ((char *)__pyx_k_105); -      } -      if (values[4]) { -      } else { -        __pyx_v_max_initial_size = ((unsigned int)10); -      } -      if (values[5]) { -      } else { -        __pyx_v_max_length = ((unsigned int)5); -      } -      if (values[6]) { -      } else { -        __pyx_v_max_nonterminals = ((unsigned int)2); -      } -      if (values[9]) { -      } else { -        __pyx_v_min_gap_size = ((unsigned int)2); -      } -      if (values[11]) { -      } else { -        __pyx_v_precompute_secondary_rank = ((unsigned int)20); -      } -      if (values[12]) { -      } else { -        __pyx_v_precompute_rank = ((unsigned int)100); -      } -      if (values[13]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":316 - *             unsigned precompute_rank=100, - *             # require extracted rules to have at least one aligned word - *             bint require_aligned_terminal=True,             # <<<<<<<<<<<<<< - *             # require each contiguous chunk of extracted rules to have at least one aligned word - *             bint require_aligned_chunks=False, - */ -        __pyx_v_require_aligned_terminal = ((int)1); -      } -      if (values[14]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":318 - *             bint require_aligned_terminal=True, - *             # require each contiguous chunk of extracted rules to have at least one aligned word - *             bint require_aligned_chunks=False,             # <<<<<<<<<<<<<< - *             # maximum span of a grammar rule extracted from TRAINING DATA - *             unsigned train_max_initial_size=10, - */ -        __pyx_v_require_aligned_chunks = ((int)0); -      } -      if (values[15]) { -      } else { -        __pyx_v_train_max_initial_size = ((unsigned int)10); -      } -      if (values[16]) { -      } else { -        __pyx_v_train_min_gap_size = ((unsigned int)2); -      } -      if (values[17]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":324 - *             unsigned train_min_gap_size=2, - *             # False if phrases should be loose (better but slower), True otherwise - *             bint tight_phrases=True,             # <<<<<<<<<<<<<< - *             # True to require use of double-binary alg, false otherwise - *             bint use_baeza_yates=True, - */ -        __pyx_v_tight_phrases = ((int)1); -      } -      if (values[18]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":326 - *             bint tight_phrases=True, - *             # True to require use of double-binary alg, false otherwise - *             bint use_baeza_yates=True,             # <<<<<<<<<<<<<< - *             # True to enable used of precomputed collocations - *             bint use_collocations=True, - */ -        __pyx_v_use_baeza_yates = ((int)1); -      } -      if (values[19]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":328 - *             bint use_baeza_yates=True, - *             # True to enable used of precomputed collocations - *             bint use_collocations=True,             # <<<<<<<<<<<<<< - *             # True to enable use of precomputed inverted indices - *             bint use_index=True): - */ -        __pyx_v_use_collocations = ((int)1); -      } -      if (values[20]) { -      } else { - -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":330 - *             bint use_collocations=True, - *             # True to enable use of precomputed inverted indices - *             bint use_index=True):             # <<<<<<<<<<<<<< - *         '''Note: we make a distinction between the min_gap_size - *         and max_initial_size used in test and train.    The latter - */ -        __pyx_v_use_index = ((int)1); -      }      } else {        switch (PyTuple_GET_SIZE(__pyx_args)) {          case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20); @@ -38976,7 +39663,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_by_slack_factor = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_by_slack_factor == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":292 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":292   *             Alignment alignment,   *             # parameter for double-binary search; doesn't seem to matter much   *             float by_slack_factor=1.0,             # <<<<<<<<<<<<<< @@ -38986,9 +39673,9 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_by_slack_factor = ((float)1.0);      }      if (values[2]) { -      __pyx_v_category = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_category) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +      __pyx_v_category = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_category) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      __pyx_v_category = ((char *)__pyx_k_105); +      __pyx_v_category = ((char *)__pyx_k_107);      }      __pyx_v_max_chunks = values[3];      if (values[4]) { @@ -39028,7 +39715,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_require_aligned_terminal = __Pyx_PyObject_IsTrue(values[13]); if (unlikely((__pyx_v_require_aligned_terminal == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":316 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":316   *             unsigned precompute_rank=100,   *             # require extracted rules to have at least one aligned word   *             bint require_aligned_terminal=True,             # <<<<<<<<<<<<<< @@ -39041,7 +39728,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_require_aligned_chunks = __Pyx_PyObject_IsTrue(values[14]); if (unlikely((__pyx_v_require_aligned_chunks == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":318 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":318   *             bint require_aligned_terminal=True,   *             # require each contiguous chunk of extracted rules to have at least one aligned word   *             bint require_aligned_chunks=False,             # <<<<<<<<<<<<<< @@ -39064,7 +39751,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_tight_phrases = __Pyx_PyObject_IsTrue(values[17]); if (unlikely((__pyx_v_tight_phrases == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":324 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":324   *             unsigned train_min_gap_size=2,   *             # False if phrases should be loose (better but slower), True otherwise   *             bint tight_phrases=True,             # <<<<<<<<<<<<<< @@ -39077,7 +39764,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_use_baeza_yates = __Pyx_PyObject_IsTrue(values[18]); if (unlikely((__pyx_v_use_baeza_yates == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":326 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":326   *             bint tight_phrases=True,   *             # True to require use of double-binary alg, false otherwise   *             bint use_baeza_yates=True,             # <<<<<<<<<<<<<< @@ -39090,7 +39777,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_use_collocations = __Pyx_PyObject_IsTrue(values[19]); if (unlikely((__pyx_v_use_collocations == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":328 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":328   *             bint use_baeza_yates=True,   *             # True to enable used of precomputed collocations   *             bint use_collocations=True,             # <<<<<<<<<<<<<< @@ -39103,7 +39790,7 @@ static int __pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(PyObject *__pyx_v_        __pyx_v_use_index = __Pyx_PyObject_IsTrue(values[20]); if (unlikely((__pyx_v_use_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}      } else { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":330 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":330   *             bint use_collocations=True,   *             # True to enable use of precomputed inverted indices   *             bint use_index=True):             # <<<<<<<<<<<<<< @@ -39138,13 +39825,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1(PyOb    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda1 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda1(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":406 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":406   *         self.phrases_f = defaultdict(int)   *         self.phrases_e = defaultdict(int)   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))             # <<<<<<<<<<<<<< @@ -39163,7 +39849,7 @@ static PyObject *__pyx_lambda_funcdef_lambda1(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda1", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __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 = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -39199,13 +39885,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2(PyO    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda2 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda2(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":407 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":407   *         self.phrases_e = defaultdict(int)   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))   *         self.phrases_al = defaultdict(lambda: defaultdict(tuple))             # <<<<<<<<<<<<<< @@ -39224,7 +39909,7 @@ static PyObject *__pyx_lambda_funcdef_lambda2(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda2", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __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 = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -39260,13 +39945,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3(PyO    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda3 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda3(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":412 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":412   *         self.bilex_f = defaultdict(int)   *         self.bilex_e = defaultdict(int)   *         self.bilex_fe = defaultdict(lambda: defaultdict(int))             # <<<<<<<<<<<<<< @@ -39285,7 +39969,7 @@ static PyObject *__pyx_lambda_funcdef_lambda3(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda3", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __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 = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -39314,7 +39998,7 @@ static PyObject *__pyx_lambda_funcdef_lambda3(CYTHON_UNUSED PyObject *__pyx_self    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":288 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":288   *     cdef bilex_fe   *    *     def __cinit__(self,             # <<<<<<<<<<<<<< @@ -39329,13 +40013,14 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    PyObject *__pyx_t_2 = NULL;    int __pyx_t_3;    int __pyx_t_4; -  PyObject *__pyx_t_5 = NULL; +  int __pyx_t_5; +  PyObject *__pyx_t_6 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":336 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":336   *         respectively.    This is because Chiang's model does not require   *         them to be the same, therefore we don't either.'''   *         self.rules = TrieTable(True) # cache             # <<<<<<<<<<<<<< @@ -39358,7 +40043,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->rules = ((struct __pyx_obj_3_sa_TrieTable *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":337 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":337   *         them to be the same, therefore we don't either.'''   *         self.rules = TrieTable(True) # cache   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())             # <<<<<<<<<<<<<< @@ -39380,7 +40065,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->rules->root = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":338 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":338   *         self.rules = TrieTable(True) # cache   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())   *         if alignment is None:             # <<<<<<<<<<<<<< @@ -39388,16 +40073,17 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   *         self.alignment = alignment   */    __pyx_t_3 = (((PyObject *)__pyx_v_alignment) == Py_None); -  if (__pyx_t_3) { +  __pyx_t_4 = (__pyx_t_3 != 0); +  if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":339 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":339   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())   *         if alignment is None:   *             raise Exception("Must specify an alignment object")             # <<<<<<<<<<<<<<   *         self.alignment = alignment   *    */ -    __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_107), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_109), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_Raise(__pyx_t_2, 0, 0, 0);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -39406,7 +40092,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":340 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":340   *         if alignment is None:   *             raise Exception("Must specify an alignment object")   *         self.alignment = alignment             # <<<<<<<<<<<<<< @@ -39419,7 +40105,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __Pyx_DECREF(((PyObject *)__pyx_v_self->alignment));    __pyx_v_self->alignment = __pyx_v_alignment; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":344 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":344   *         # grammar parameters and settings   *         # NOTE: setting max_nonterminals > 2 is not currently supported in Hiero   *         self.max_length = max_length             # <<<<<<<<<<<<<< @@ -39428,7 +40114,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->max_length = __pyx_v_max_length; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":345 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":345   *         # NOTE: setting max_nonterminals > 2 is not currently supported in Hiero   *         self.max_length = max_length   *         self.max_nonterminals = max_nonterminals             # <<<<<<<<<<<<<< @@ -39437,7 +40123,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->max_nonterminals = __pyx_v_max_nonterminals; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":346 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":346   *         self.max_length = max_length   *         self.max_nonterminals = max_nonterminals   *         self.max_initial_size = max_initial_size             # <<<<<<<<<<<<<< @@ -39446,7 +40132,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->max_initial_size = __pyx_v_max_initial_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":347 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":347   *         self.max_nonterminals = max_nonterminals   *         self.max_initial_size = max_initial_size   *         self.train_max_initial_size = train_max_initial_size             # <<<<<<<<<<<<<< @@ -39455,7 +40141,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->train_max_initial_size = __pyx_v_train_max_initial_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":348 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":348   *         self.max_initial_size = max_initial_size   *         self.train_max_initial_size = train_max_initial_size   *         self.min_gap_size = min_gap_size             # <<<<<<<<<<<<<< @@ -39464,7 +40150,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->min_gap_size = __pyx_v_min_gap_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":349 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":349   *         self.train_max_initial_size = train_max_initial_size   *         self.min_gap_size = min_gap_size   *         self.train_min_gap_size = train_min_gap_size             # <<<<<<<<<<<<<< @@ -39473,7 +40159,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->train_min_gap_size = __pyx_v_train_min_gap_size; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":350 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":350   *         self.min_gap_size = min_gap_size   *         self.train_min_gap_size = train_min_gap_size   *         self.category = sym_fromstring(category, False)             # <<<<<<<<<<<<<< @@ -39482,17 +40168,18 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->category = __pyx_f_3_sa_sym_fromstring(__pyx_v_category, 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":352 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":352   *         self.category = sym_fromstring(category, False)   *    *         if max_chunks is None:             # <<<<<<<<<<<<<<   *             self.max_chunks = self.max_nonterminals + 1   *         else:   */ -  __pyx_t_3 = (__pyx_v_max_chunks == Py_None); +  __pyx_t_4 = (__pyx_v_max_chunks == Py_None); +  __pyx_t_3 = (__pyx_t_4 != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":353 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":353   *    *         if max_chunks is None:   *             self.max_chunks = self.max_nonterminals + 1             # <<<<<<<<<<<<<< @@ -39504,19 +40191,19 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":355 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":355   *             self.max_chunks = self.max_nonterminals + 1   *         else:   *             self.max_chunks = max_chunks             # <<<<<<<<<<<<<<   *    *         if max_target_chunks is None:   */ -    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_max_chunks); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_v_self->max_chunks = __pyx_t_4; +    __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_chunks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_v_self->max_chunks = __pyx_t_5;    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":357 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":357   *             self.max_chunks = max_chunks   *    *         if max_target_chunks is None:             # <<<<<<<<<<<<<< @@ -39524,9 +40211,10 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   *         else:   */    __pyx_t_3 = (__pyx_v_max_target_chunks == Py_None); -  if (__pyx_t_3) { +  __pyx_t_4 = (__pyx_t_3 != 0); +  if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":358 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":358   *    *         if max_target_chunks is None:   *             self.max_target_chunks = self.max_nonterminals + 1             # <<<<<<<<<<<<<< @@ -39538,29 +40226,30 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":360 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":360   *             self.max_target_chunks = self.max_nonterminals + 1   *         else:   *             self.max_target_chunks = max_target_chunks             # <<<<<<<<<<<<<<   *    *         if max_target_length is None:   */ -    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_max_target_chunks); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_v_self->max_target_chunks = __pyx_t_4; +    __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_target_chunks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_v_self->max_target_chunks = __pyx_t_5;    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":362 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":362   *             self.max_target_chunks = max_target_chunks   *    *         if max_target_length is None:             # <<<<<<<<<<<<<<   *             self.max_target_length = max_initial_size   *         else:   */ -  __pyx_t_3 = (__pyx_v_max_target_length == Py_None); +  __pyx_t_4 = (__pyx_v_max_target_length == Py_None); +  __pyx_t_3 = (__pyx_t_4 != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":363 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":363   *    *         if max_target_length is None:   *             self.max_target_length = max_initial_size             # <<<<<<<<<<<<<< @@ -39572,19 +40261,19 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":365 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":365   *             self.max_target_length = max_initial_size   *         else:   *             self.max_target_length = max_target_length             # <<<<<<<<<<<<<<   *    *         # algorithmic parameters and settings   */ -    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_max_target_length); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_v_self->max_target_length = __pyx_t_4; +    __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_max_target_length); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_v_self->max_target_length = __pyx_t_5;    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":368 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":368   *    *         # algorithmic parameters and settings   *         self.precomputed_collocations = {}             # <<<<<<<<<<<<<< @@ -39599,7 +40288,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->precomputed_collocations = ((PyObject *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":369 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":369   *         # algorithmic parameters and settings   *         self.precomputed_collocations = {}   *         self.precomputed_index = {}             # <<<<<<<<<<<<<< @@ -39614,7 +40303,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->precomputed_index = ((PyObject *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":370 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":370   *         self.precomputed_collocations = {}   *         self.precomputed_index = {}   *         self.use_index = use_index             # <<<<<<<<<<<<<< @@ -39623,7 +40312,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->use_index = __pyx_v_use_index; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":371 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":371   *         self.precomputed_index = {}   *         self.use_index = use_index   *         self.use_collocations = use_collocations             # <<<<<<<<<<<<<< @@ -39632,7 +40321,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->use_collocations = __pyx_v_use_collocations; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":372 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":372   *         self.use_index = use_index   *         self.use_collocations = use_collocations   *         self.max_rank = {}             # <<<<<<<<<<<<<< @@ -39647,7 +40336,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->max_rank = ((PyObject *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":373 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":373   *         self.use_collocations = use_collocations   *         self.max_rank = {}   *         self.precompute_file = precompute_file             # <<<<<<<<<<<<<< @@ -39660,7 +40349,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __Pyx_DECREF(__pyx_v_self->precompute_file);    __pyx_v_self->precompute_file = __pyx_v_precompute_file; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":374 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":374   *         self.max_rank = {}   *         self.precompute_file = precompute_file   *         self.precompute_rank = precompute_rank             # <<<<<<<<<<<<<< @@ -39669,7 +40358,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->precompute_rank = __pyx_v_precompute_rank; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":375 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":375   *         self.precompute_file = precompute_file   *         self.precompute_rank = precompute_rank   *         self.precompute_secondary_rank = precompute_secondary_rank             # <<<<<<<<<<<<<< @@ -39678,7 +40367,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->precompute_secondary_rank = __pyx_v_precompute_secondary_rank; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":376 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":376   *         self.precompute_rank = precompute_rank   *         self.precompute_secondary_rank = precompute_secondary_rank   *         self.use_baeza_yates = use_baeza_yates             # <<<<<<<<<<<<<< @@ -39687,7 +40376,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->use_baeza_yates = __pyx_v_use_baeza_yates; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":377 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":377   *         self.precompute_secondary_rank = precompute_secondary_rank   *         self.use_baeza_yates = use_baeza_yates   *         self.by_slack_factor = by_slack_factor             # <<<<<<<<<<<<<< @@ -39696,7 +40385,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->by_slack_factor = __pyx_v_by_slack_factor; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":378 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":378   *         self.use_baeza_yates = use_baeza_yates   *         self.by_slack_factor = by_slack_factor   *         self.tight_phrases = tight_phrases             # <<<<<<<<<<<<<< @@ -39705,16 +40394,17 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->tight_phrases = __pyx_v_tight_phrases; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":380 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":380   *         self.tight_phrases = tight_phrases   *    *         if require_aligned_chunks:             # <<<<<<<<<<<<<<   *             # one condition is a stronger version of the other.   *             self.require_aligned_chunks = self.require_aligned_terminal = True   */ -  if (__pyx_v_require_aligned_chunks) { +  __pyx_t_3 = (__pyx_v_require_aligned_chunks != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":382 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":382   *         if require_aligned_chunks:   *             # one condition is a stronger version of the other.   *             self.require_aligned_chunks = self.require_aligned_terminal = True             # <<<<<<<<<<<<<< @@ -39726,16 +40416,17 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_      goto __pyx_L7;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":383 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":383   *             # one condition is a stronger version of the other.   *             self.require_aligned_chunks = self.require_aligned_terminal = True   *         elif require_aligned_terminal:             # <<<<<<<<<<<<<<   *             self.require_aligned_chunks = False   *             self.require_aligned_terminal = True   */ -  if (__pyx_v_require_aligned_terminal) { +  __pyx_t_3 = (__pyx_v_require_aligned_terminal != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":384 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":384   *             self.require_aligned_chunks = self.require_aligned_terminal = True   *         elif require_aligned_terminal:   *             self.require_aligned_chunks = False             # <<<<<<<<<<<<<< @@ -39744,7 +40435,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */      __pyx_v_self->require_aligned_chunks = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":385 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":385   *         elif require_aligned_terminal:   *             self.require_aligned_chunks = False   *             self.require_aligned_terminal = True             # <<<<<<<<<<<<<< @@ -39756,7 +40447,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":387 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":387   *             self.require_aligned_terminal = True   *         else:   *             self.require_aligned_chunks = self.require_aligned_terminal = False             # <<<<<<<<<<<<<< @@ -39768,7 +40459,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    }    __pyx_L7:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":390 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":390   *    *         # diagnostics   *         self.prev_norm_prefix = ()             # <<<<<<<<<<<<<< @@ -39781,7 +40472,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __Pyx_DECREF(__pyx_v_self->prev_norm_prefix);    __pyx_v_self->prev_norm_prefix = ((PyObject *)__pyx_empty_tuple); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":392 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":392   *         self.prev_norm_prefix = ()   *    *         self.findexes = IntList(initial_len=10)             # <<<<<<<<<<<<<< @@ -39800,7 +40491,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->findexes = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":393 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":393   *    *         self.findexes = IntList(initial_len=10)   *         self.findexes1 = IntList(initial_len=10)             # <<<<<<<<<<<<<< @@ -39819,7 +40510,7 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->findexes1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":398 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":398   *    *         # True after data is added   *         self.online = False             # <<<<<<<<<<<<<< @@ -39828,47 +40519,47 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_   */    __pyx_v_self->online = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":401 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":401   *    *         # Keep track of everything that can be sampled:   *         self.samples_f = defaultdict(int)             # <<<<<<<<<<<<<<   *    *         # Phrase counts   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __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[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));    __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); +  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __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_1)); __pyx_t_1 = 0; -  __Pyx_GIVEREF(__pyx_t_5); +  __Pyx_GIVEREF(__pyx_t_6);    __Pyx_GOTREF(__pyx_v_self->samples_f);    __Pyx_DECREF(__pyx_v_self->samples_f); -  __pyx_v_self->samples_f = __pyx_t_5; -  __pyx_t_5 = 0; +  __pyx_v_self->samples_f = __pyx_t_6; +  __pyx_t_6 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":404 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":404   *    *         # Phrase counts   *         self.phrases_f = defaultdict(int)             # <<<<<<<<<<<<<<   *         self.phrases_e = defaultdict(int)   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))   */ -  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); +  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6);    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));    __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __Pyx_GIVEREF(__pyx_t_2);    __Pyx_GOTREF(__pyx_v_self->phrases_f); @@ -39876,49 +40567,49 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->phrases_f = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":405 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":405   *         # Phrase counts   *         self.phrases_f = defaultdict(int)   *         self.phrases_e = defaultdict(int)             # <<<<<<<<<<<<<<   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))   *         self.phrases_al = defaultdict(lambda: defaultdict(tuple))   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __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[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type))));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));    __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); +  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 405; __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_1)); __pyx_t_1 = 0; -  __Pyx_GIVEREF(__pyx_t_5); +  __Pyx_GIVEREF(__pyx_t_6);    __Pyx_GOTREF(__pyx_v_self->phrases_e);    __Pyx_DECREF(__pyx_v_self->phrases_e); -  __pyx_v_self->phrases_e = __pyx_t_5; -  __pyx_t_5 = 0; +  __pyx_v_self->phrases_e = __pyx_t_6; +  __pyx_t_6 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":406 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":406   *         self.phrases_f = defaultdict(int)   *         self.phrases_e = defaultdict(int)   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))             # <<<<<<<<<<<<<<   *         self.phrases_al = defaultdict(lambda: defaultdict(tuple))   *    */ -  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); -  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6); +  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___lambda1, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __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 = 406; __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(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->phrases_fe); @@ -39926,112 +40617,112 @@ static int __pyx_pf_3_sa_23HieroCachingRuleFactory___cinit__(struct __pyx_obj_3_    __pyx_v_self->phrases_fe = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":407 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":407   *         self.phrases_e = defaultdict(int)   *         self.phrases_fe = defaultdict(lambda: defaultdict(int))   *         self.phrases_al = defaultdict(lambda: defaultdict(tuple))             # <<<<<<<<<<<<<<   *    *         # Bilexical counts   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___1lambda2, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __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[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); -  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); +  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6); +  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);    __Pyx_GIVEREF(__pyx_t_2);    __pyx_t_2 = 0; -  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 407; __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_t_5)); __pyx_t_5 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;    __Pyx_GIVEREF(__pyx_t_2);    __Pyx_GOTREF(__pyx_v_self->phrases_al);    __Pyx_DECREF(__pyx_v_self->phrases_al);    __pyx_v_self->phrases_al = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":410 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":410   *    *         # Bilexical counts   *         self.bilex_f = defaultdict(int)             # <<<<<<<<<<<<<<   *         self.bilex_e = defaultdict(int)   *         self.bilex_fe = defaultdict(lambda: defaultdict(int))   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __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[8]; __pyx_lineno = 410; __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[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6);    __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)((PyObject*)(&PyInt_Type)))); +  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));    __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;    __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->bilex_f);    __Pyx_DECREF(__pyx_v_self->bilex_f);    __pyx_v_self->bilex_f = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":411 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":411   *         # Bilexical counts   *         self.bilex_f = defaultdict(int)   *         self.bilex_e = defaultdict(int)             # <<<<<<<<<<<<<<   *         self.bilex_fe = defaultdict(lambda: defaultdict(int))   *    */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __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 = 411; __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[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6);    __Pyx_INCREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)((PyObject*)(&PyInt_Type)))); +  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)(&PyInt_Type))));    __Pyx_GIVEREF(((PyObject *)((PyObject*)(&PyInt_Type)))); -  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 411; __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_t_5)); __pyx_t_5 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;    __Pyx_GIVEREF(__pyx_t_2);    __Pyx_GOTREF(__pyx_v_self->bilex_e);    __Pyx_DECREF(__pyx_v_self->bilex_e);    __pyx_v_self->bilex_e = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":412 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":412   *         self.bilex_f = defaultdict(int)   *         self.bilex_e = defaultdict(int)   *         self.bilex_fe = defaultdict(lambda: defaultdict(int))             # <<<<<<<<<<<<<<   *    *     def configure(self, SuffixArray fsarray, DataArray edarray,   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); +  __pyx_t_6 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9__cinit___2lambda3, 0, __pyx_n_s_110, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_6);    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); -  __Pyx_GIVEREF(__pyx_t_5); -  __pyx_t_5 = 0; -  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_5); +  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); +  __Pyx_GIVEREF(__pyx_t_6); +  __pyx_t_6 = 0; +  __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 412; __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_1)); __pyx_t_1 = 0; -  __Pyx_GIVEREF(__pyx_t_5); +  __Pyx_GIVEREF(__pyx_t_6);    __Pyx_GOTREF(__pyx_v_self->bilex_fe);    __Pyx_DECREF(__pyx_v_self->bilex_fe); -  __pyx_v_self->bilex_fe = __pyx_t_5; -  __pyx_t_5 = 0; +  __pyx_v_self->bilex_fe = __pyx_t_6; +  __pyx_t_6 = 0;    __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_XDECREF(__pyx_t_6);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = -1;    __pyx_L0:; @@ -40047,11 +40738,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure(PyObject *__    struct __pyx_obj_3_sa_DataArray *__pyx_v_edarray = 0;    struct __pyx_obj_3_sa_Sampler *__pyx_v_sampler = 0;    struct __pyx_obj_3_sa_Scorer *__pyx_v_scorer = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__edarray,&__pyx_n_s__sampler,&__pyx_n_s__scorer,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("configure (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fsarray,&__pyx_n_s__edarray,&__pyx_n_s__sampler,&__pyx_n_s__scorer,0};      PyObject* values[4] = {0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -40067,24 +40761,20 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure(PyObject *__        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fsarray)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__edarray); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__edarray)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sampler); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sampler)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scorer); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scorer)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("configure", 1, 4, 4, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -40126,7 +40816,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure(PyObject *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":414 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":414   *         self.bilex_fe = defaultdict(lambda: defaultdict(int))   *    *     def configure(self, SuffixArray fsarray, DataArray edarray,             # <<<<<<<<<<<<<< @@ -40144,7 +40834,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("configure", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":419 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":419   *         Here we also use it to precompute the most expensive intersections   *         in the corpus quickly.'''   *         self.fsa = fsarray             # <<<<<<<<<<<<<< @@ -40157,20 +40847,22 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    __Pyx_DECREF(((PyObject *)__pyx_v_self->fsa));    __pyx_v_self->fsa = __pyx_v_fsarray; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":420 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":420   *         in the corpus quickly.'''   *         self.fsa = fsarray   *         self.fda = fsarray.darray             # <<<<<<<<<<<<<<   *         self.eda = edarray   *         self.fid2symid = self.set_idmap(self.fda)   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_fsarray->darray)); -  __Pyx_GIVEREF(((PyObject *)__pyx_v_fsarray->darray)); +  __pyx_t_1 = ((PyObject *)__pyx_v_fsarray->darray); +  __Pyx_INCREF(__pyx_t_1); +  __Pyx_GIVEREF(__pyx_t_1);    __Pyx_GOTREF(__pyx_v_self->fda);    __Pyx_DECREF(((PyObject *)__pyx_v_self->fda)); -  __pyx_v_self->fda = __pyx_v_fsarray->darray; +  __pyx_v_self->fda = ((struct __pyx_obj_3_sa_DataArray *)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":421 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":421   *         self.fsa = fsarray   *         self.fda = fsarray.darray   *         self.eda = edarray             # <<<<<<<<<<<<<< @@ -40183,7 +40875,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    __Pyx_DECREF(((PyObject *)__pyx_v_self->eda));    __pyx_v_self->eda = __pyx_v_edarray; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":422 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":422   *         self.fda = fsarray.darray   *         self.eda = edarray   *         self.fid2symid = self.set_idmap(self.fda)             # <<<<<<<<<<<<<< @@ -40202,7 +40894,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    __pyx_v_self->fid2symid = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":423 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":423   *         self.eda = edarray   *         self.fid2symid = self.set_idmap(self.fda)   *         self.eid2symid = self.set_idmap(self.eda)             # <<<<<<<<<<<<<< @@ -40221,21 +40913,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    __pyx_v_self->eid2symid = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":424 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":424   *         self.fid2symid = self.set_idmap(self.fda)   *         self.eid2symid = self.set_idmap(self.eda)   *         self.precompute()             # <<<<<<<<<<<<<<   *         self.sampler = sampler   *         self.scorer = scorer   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__precompute); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 424; __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 = 424; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":425 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":425   *         self.eid2symid = self.set_idmap(self.eda)   *         self.precompute()   *         self.sampler = sampler             # <<<<<<<<<<<<<< @@ -40248,7 +40940,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    __Pyx_DECREF(((PyObject *)__pyx_v_self->sampler));    __pyx_v_self->sampler = __pyx_v_sampler; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":426 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":426   *         self.precompute()   *         self.sampler = sampler   *         self.scorer = scorer             # <<<<<<<<<<<<<< @@ -40274,7 +40966,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_2configure(struct __pyx    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":428 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":428   *         self.scorer = scorer   *    *     cdef set_idmap(self, DataArray darray):             # <<<<<<<<<<<<<< @@ -40299,7 +40991,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("set_idmap", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":432 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":432   *         cdef IntList idmap   *    *         N = len(darray.id2word)             # <<<<<<<<<<<<<< @@ -40312,7 +41004,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_v_N = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":433 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":433   *    *         N = len(darray.id2word)   *         idmap = IntList(initial_len=N)             # <<<<<<<<<<<<<< @@ -40331,7 +41023,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED    __pyx_v_idmap = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":434 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":434   *         N = len(darray.id2word)   *         idmap = IntList(initial_len=N)   *         for word_id from 0 <= word_id < N:             # <<<<<<<<<<<<<< @@ -40341,20 +41033,20 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED    __pyx_t_4 = __pyx_v_N;    for (__pyx_v_word_id = 0; __pyx_v_word_id < __pyx_t_4; __pyx_v_word_id++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":435 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":435   *         idmap = IntList(initial_len=N)   *         for word_id from 0 <= word_id < N:   *             new_word_id = sym_fromstring(darray.id2word[word_id], True)             # <<<<<<<<<<<<<<   *             idmap.arr[word_id] = new_word_id   *         return idmap   */ -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_darray->id2word, __pyx_v_word_id, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_darray->id2word, __pyx_v_word_id, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_5 = PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __pyx_v_new_word_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_5, 1); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":436 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":436   *         for word_id from 0 <= word_id < N:   *             new_word_id = sym_fromstring(darray.id2word[word_id], True)   *             idmap.arr[word_id] = new_word_id             # <<<<<<<<<<<<<< @@ -40364,7 +41056,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap(CYTHON_UNUSED      (__pyx_v_idmap->arr[__pyx_v_word_id]) = __pyx_v_new_word_id;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":437 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":437   *             new_word_id = sym_fromstring(darray.id2word[word_id], True)   *             idmap.arr[word_id] = new_word_id   *         return idmap             # <<<<<<<<<<<<<< @@ -40401,7 +41093,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase(PyObjec    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":440 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":440   *    *    *     def pattern2phrase(self, pattern):             # <<<<<<<<<<<<<< @@ -40429,7 +41121,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("pattern2phrase", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":442 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":442   *     def pattern2phrase(self, pattern):   *         # pattern is a tuple, which we must convert to a hiero Phrase   *         result = ()             # <<<<<<<<<<<<<< @@ -40439,7 +41131,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct    __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));    __pyx_v_result = __pyx_empty_tuple; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":443 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":443   *         # pattern is a tuple, which we must convert to a hiero Phrase   *         result = ()   *         arity = 0             # <<<<<<<<<<<<<< @@ -40449,7 +41141,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct    __Pyx_INCREF(__pyx_int_0);    __pyx_v_arity = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":444 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":444   *         result = ()   *         arity = 0   *         for word_id in pattern:             # <<<<<<<<<<<<<< @@ -40467,10 +41159,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -40486,20 +41186,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct      __pyx_v_word_id = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":445 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":445   *         arity = 0   *         for word_id in pattern:   *             if word_id == -1:             # <<<<<<<<<<<<<<   *                 arity = arity + 1   *                 new_id = sym_setindex(self.category, arity)   */ -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":446 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":446   *         for word_id in pattern:   *             if word_id == -1:   *                 arity = arity + 1             # <<<<<<<<<<<<<< @@ -40512,7 +41211,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct        __pyx_v_arity = __pyx_t_4;        __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":447 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":447   *             if word_id == -1:   *                 arity = arity + 1   *                 new_id = sym_setindex(self.category, arity)             # <<<<<<<<<<<<<< @@ -40525,7 +41224,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":449 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":449   *                 new_id = sym_setindex(self.category, arity)   *             else:   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)             # <<<<<<<<<<<<<< @@ -40534,13 +41233,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct   */        __pyx_t_4 = PyObject_GetItem(__pyx_v_self->fda->id2word, __pyx_v_word_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_7 = PyBytes_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_v_new_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_7, 1);      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":450 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":450   *             else:   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)   *             result = result + (new_id,)             # <<<<<<<<<<<<<< @@ -40558,12 +41257,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_4pattern2phrase(struct      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;      __Pyx_DECREF(((PyObject *)__pyx_v_result)); -    __pyx_v_result = __pyx_t_4; +    __pyx_v_result = ((PyObject*)__pyx_t_4);      __pyx_t_4 = 0;    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":451 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":451   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)   *             result = result + (new_id,)   *         return Phrase(result)             # <<<<<<<<<<<<<< @@ -40611,7 +41310,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus(Py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":453 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":453   *         return Phrase(result)   *    *     def pattern2phrase_plus(self, pattern):             # <<<<<<<<<<<<<< @@ -40641,7 +41340,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("pattern2phrase_plus", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":456 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":456   *         # returns a list containing both the pattern, and pattern   *         # suffixed/prefixed with the NT category.   *         patterns = []             # <<<<<<<<<<<<<< @@ -40650,10 +41349,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_patterns = __pyx_t_1; +  __pyx_v_patterns = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":457 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":457   *         # suffixed/prefixed with the NT category.   *         patterns = []   *         result = ()             # <<<<<<<<<<<<<< @@ -40663,7 +41362,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));    __pyx_v_result = __pyx_empty_tuple; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":458 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":458   *         patterns = []   *         result = ()   *         arity = 0             # <<<<<<<<<<<<<< @@ -40673,7 +41372,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    __Pyx_INCREF(__pyx_int_0);    __pyx_v_arity = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":459 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":459   *         result = ()   *         arity = 0   *         for word_id in pattern:             # <<<<<<<<<<<<<< @@ -40691,10 +41390,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -40710,20 +41417,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st      __pyx_v_word_id = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":460 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":460   *         arity = 0   *         for word_id in pattern:   *             if word_id == -1:             # <<<<<<<<<<<<<<   *                 arity = arity + 1   *                 new_id = sym_setindex(self.category, arity)   */ -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_word_id, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":461 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":461   *         for word_id in pattern:   *             if word_id == -1:   *                 arity = arity + 1             # <<<<<<<<<<<<<< @@ -40736,7 +41442,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st        __pyx_v_arity = __pyx_t_4;        __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":462 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":462   *             if word_id == -1:   *                 arity = arity + 1   *                 new_id = sym_setindex(self.category, arity)             # <<<<<<<<<<<<<< @@ -40749,7 +41455,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":464 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":464   *                 new_id = sym_setindex(self.category, arity)   *             else:   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)             # <<<<<<<<<<<<<< @@ -40758,13 +41464,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st   */        __pyx_t_4 = PyObject_GetItem(__pyx_v_self->fda->id2word, __pyx_v_word_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_7 = PyBytes_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __pyx_v_new_id = __pyx_f_3_sa_sym_fromstring(__pyx_t_7, 1);      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":465 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":465   *             else:   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)   *             result = result + (new_id,)             # <<<<<<<<<<<<<< @@ -40782,12 +41488,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;      __Pyx_DECREF(((PyObject *)__pyx_v_result)); -    __pyx_v_result = __pyx_t_4; +    __pyx_v_result = ((PyObject*)__pyx_t_4);      __pyx_t_4 = 0;    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":466 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":466   *                 new_id = sym_fromstring(self.fda.id2word[word_id], True)   *             result = result + (new_id,)   *         patterns.append(Phrase(result))             # <<<<<<<<<<<<<< @@ -40802,10 +41508,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  __pyx_t_9 = PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":467 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":467   *             result = result + (new_id,)   *         patterns.append(Phrase(result))   *         patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))             # <<<<<<<<<<<<<< @@ -40830,10 +41536,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  __pyx_t_9 = PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":468 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":468   *         patterns.append(Phrase(result))   *         patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))   *         patterns.append(Phrase((sym_setindex(self.category, 1),) + result))             # <<<<<<<<<<<<<< @@ -40858,10 +41564,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_6pattern2phrase_plus(st    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  __pyx_t_9 = PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_patterns, __pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":469 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":469   *         patterns.append(Phrase(result + (sym_setindex(self.category, 1),)))   *         patterns.append(Phrase((sym_setindex(self.category, 1),) + result))   *         return patterns             # <<<<<<<<<<<<<< @@ -40902,7 +41608,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute(PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":471 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":471   *         return patterns   *    *     def precompute(self):             # <<<<<<<<<<<<<< @@ -40921,22 +41627,23 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; +  int __pyx_t_2;    PyObject *__pyx_t_3 = NULL;    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL; -  Py_ssize_t __pyx_t_6; -  PyObject *(*__pyx_t_7)(PyObject *); -  PyObject *__pyx_t_8 = NULL; -  PyObject *(*__pyx_t_9)(PyObject *); -  Py_ssize_t __pyx_t_10; -  PyObject *(*__pyx_t_11)(PyObject *); +  PyObject *__pyx_t_6 = NULL; +  Py_ssize_t __pyx_t_7; +  Py_ssize_t __pyx_t_8; +  int __pyx_t_9; +  int __pyx_t_10; +  Py_ssize_t __pyx_t_11; +  PyObject *(*__pyx_t_12)(PyObject *);    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("precompute", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":474 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":474   *         cdef Precomputation pre   *    *         if self.precompute_file is not None:             # <<<<<<<<<<<<<< @@ -40944,403 +41651,347 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py   *             logger.info("Reading precomputed data from file %s... ", self.precompute_file)   */    __pyx_t_1 = (__pyx_v_self->precompute_file != Py_None); -  if (__pyx_t_1) { +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":475 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":475   *    *         if self.precompute_file is not None:   *             start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *             logger.info("Reading precomputed data from file %s... ", self.precompute_file)   *             pre = Precomputation(from_binary=self.precompute_file)   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 475; __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[8]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_v_start_time = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_v_start_time = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":476 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":476   *         if self.precompute_file is not None:   *             start_time = monitor_cpu()   *             logger.info("Reading precomputed data from file %s... ", self.precompute_file)             # <<<<<<<<<<<<<<   *             pre = Precomputation(from_binary=self.precompute_file)   *             # check parameters of precomputation -- some are critical and some are not   */ -    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __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[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_108)); -    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_108)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_108)); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_111)); +    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_111)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_111));      __Pyx_INCREF(__pyx_v_self->precompute_file); -    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->precompute_file); +    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->precompute_file);      __Pyx_GIVEREF(__pyx_v_self->precompute_file); -    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __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_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __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(__pyx_t_5); __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":477 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":477   *             start_time = monitor_cpu()   *             logger.info("Reading precomputed data from file %s... ", self.precompute_file)   *             pre = Precomputation(from_binary=self.precompute_file)             # <<<<<<<<<<<<<<   *             # check parameters of precomputation -- some are critical and some are not   *             if pre.max_nonterminals != self.max_nonterminals:   */ -    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(((PyObject *)__pyx_t_4)); -    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__from_binary), __pyx_v_self->precompute_file) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Precomputation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -    __pyx_v_pre = ((struct __pyx_obj_3_sa_Precomputation *)__pyx_t_3); -    __pyx_t_3 = 0; +    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(((PyObject *)__pyx_t_5)); +    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__from_binary), __pyx_v_self->precompute_file) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Precomputation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; +    __pyx_v_pre = ((struct __pyx_obj_3_sa_Precomputation *)__pyx_t_4); +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":479 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":479   *             pre = Precomputation(from_binary=self.precompute_file)   *             # check parameters of precomputation -- some are critical and some are not   *             if pre.max_nonterminals != self.max_nonterminals:             # <<<<<<<<<<<<<<   *                 logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)   *             if pre.max_length != self.max_length:   */ -    __pyx_t_1 = (__pyx_v_pre->max_nonterminals != __pyx_v_self->max_nonterminals); -    if (__pyx_t_1) { +    __pyx_t_2 = ((__pyx_v_pre->max_nonterminals != __pyx_v_self->max_nonterminals) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":480 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":480   *             # check parameters of precomputation -- some are critical and some are not   *             if pre.max_nonterminals != self.max_nonterminals:   *                 logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)             # <<<<<<<<<<<<<<   *             if pre.max_length != self.max_length:   *                 logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)   */ -      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__warn); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = PyInt_FromLong(__pyx_v_pre->max_nonterminals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_2 = PyInt_FromLong(__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __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[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__warn); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_109)); -      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_s_109)); -      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_109)); -      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyInt_FromLong(__pyx_v_pre->max_nonterminals); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_3 = PyInt_FromLong(__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_112)); +      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_kp_s_112)); +      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_112)); +      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);        __Pyx_GIVEREF(__pyx_t_3); -      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      __pyx_t_4 = 0;        __pyx_t_3 = 0; -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __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_5)); __pyx_t_5 = 0; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        goto __pyx_L4;      }      __pyx_L4:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":481 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":481   *             if pre.max_nonterminals != self.max_nonterminals:   *                 logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)   *             if pre.max_length != self.max_length:             # <<<<<<<<<<<<<<   *                 logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)   *             if pre.train_max_initial_size != self.train_max_initial_size:   */ -    __pyx_t_1 = (__pyx_v_pre->max_length != __pyx_v_self->max_length); -    if (__pyx_t_1) { +    __pyx_t_2 = ((__pyx_v_pre->max_length != __pyx_v_self->max_length) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":482 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":482   *                 logger.warn("Precomputation done with max nonterminals %d, decoder uses %d", pre.max_nonterminals, self.max_nonterminals)   *             if pre.max_length != self.max_length:   *                 logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)             # <<<<<<<<<<<<<<   *             if pre.train_max_initial_size != self.train_max_initial_size:   *                 raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__warn); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyInt_FromLong(__pyx_v_pre->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyInt_FromLong(__pyx_v_self->max_length); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_110)); -      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_110)); -      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_110)); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_2 = 0; -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__warn); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_3 = PyInt_FromLong(__pyx_v_pre->max_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_5 = PyInt_FromLong(__pyx_v_self->max_length); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_113)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_113)); +      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_113)); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); +      __Pyx_GIVEREF(__pyx_t_3); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_5); +      __Pyx_GIVEREF(__pyx_t_5); +      __pyx_t_3 = 0; +      __pyx_t_5 = 0; +      __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        goto __pyx_L5;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":483 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":483   *             if pre.max_length != self.max_length:   *                 logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)   *             if pre.train_max_initial_size != self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                 raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))   *             if pre.train_min_gap_size != self.train_min_gap_size:   */ -    __pyx_t_1 = (__pyx_v_pre->train_max_initial_size != __pyx_v_self->train_max_initial_size); -    if (__pyx_t_1) { +    __pyx_t_2 = ((__pyx_v_pre->train_max_initial_size != __pyx_v_self->train_max_initial_size) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":484 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":484   *                 logger.warn("Precomputation done with max terminals %d, decoder uses %d", pre.max_length, self.max_length)   *             if pre.train_max_initial_size != self.train_max_initial_size:   *                 raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))             # <<<<<<<<<<<<<<   *             if pre.train_min_gap_size != self.train_min_gap_size:   *                 raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))   */ -      __pyx_t_4 = PyInt_FromLong(__pyx_v_pre->train_max_initial_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_3 = PyInt_FromLong(__pyx_v_self->train_max_initial_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyInt_FromLong(__pyx_v_pre->train_max_initial_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); +      __pyx_t_4 = PyInt_FromLong(__pyx_v_self->train_max_initial_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __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[8]; __pyx_lineno = 484; __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); +      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);        __Pyx_GIVEREF(__pyx_t_4); -      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); -      __Pyx_GIVEREF(__pyx_t_3); +      __pyx_t_5 = 0;        __pyx_t_4 = 0; -      __pyx_t_3 = 0; -      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_111), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(((PyObject *)__pyx_t_3)); -      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; -      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_3)); -      __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -      __pyx_t_3 = 0; -      __pyx_t_3 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; -      __Pyx_Raise(__pyx_t_3, 0, 0, 0); -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_114), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(((PyObject *)__pyx_t_4)); +      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; +      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_4)); +      __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; +      __Pyx_Raise(__pyx_t_4, 0, 0, 0); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        goto __pyx_L6;      }      __pyx_L6:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":485 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":485   *             if pre.train_max_initial_size != self.train_max_initial_size:   *                 raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))   *             if pre.train_min_gap_size != self.train_min_gap_size:             # <<<<<<<<<<<<<<   *                 raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))   *             if self.use_index:   */ -    __pyx_t_1 = (__pyx_v_pre->train_min_gap_size != __pyx_v_self->train_min_gap_size); -    if (__pyx_t_1) { +    __pyx_t_2 = ((__pyx_v_pre->train_min_gap_size != __pyx_v_self->train_min_gap_size) != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":486 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":486   *                 raise Exception("Precomputation done with max initial size %d, decoder uses %d" % (pre.train_max_initial_size, self.train_max_initial_size))   *             if pre.train_min_gap_size != self.train_min_gap_size:   *                 raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))             # <<<<<<<<<<<<<<   *             if self.use_index:   *                 logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))   */ -      __pyx_t_3 = PyInt_FromLong(__pyx_v_pre->train_min_gap_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_5 = PyInt_FromLong(__pyx_v_self->train_min_gap_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __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[8]; __pyx_lineno = 486; __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); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5); -      __Pyx_GIVEREF(__pyx_t_5); -      __pyx_t_3 = 0; -      __pyx_t_5 = 0; -      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_112), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(((PyObject *)__pyx_t_5)); -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyInt_FromLong(__pyx_v_pre->train_min_gap_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5)); -      __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); -      __pyx_t_5 = 0; -      __pyx_t_5 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyInt_FromLong(__pyx_v_self->train_min_gap_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __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[8]; __pyx_lineno = 486; __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_t_5, 0, 0, 0); -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); +      __Pyx_GIVEREF(__pyx_t_6); +      __pyx_t_4 = 0; +      __pyx_t_6 = 0; +      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_115), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(((PyObject *)__pyx_t_6)); +      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; +      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6)); +      __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); +      __pyx_t_6 = 0; +      __pyx_t_6 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; +      __Pyx_Raise(__pyx_t_6, 0, 0, 0); +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        goto __pyx_L7;      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":487 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":487   *             if pre.train_min_gap_size != self.train_min_gap_size:   *                 raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))   *             if self.use_index:             # <<<<<<<<<<<<<<   *                 logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))   *                 for pattern, arr in pre.precomputed_index.iteritems():   */ -    if (__pyx_v_self->use_index) { +    __pyx_t_2 = (__pyx_v_self->use_index != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":488 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":488   *                 raise Exception("Precomputation done with min gap size %d, decoder uses %d" % (pre.train_min_gap_size, self.train_min_gap_size))   *             if self.use_index:   *                 logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))             # <<<<<<<<<<<<<<   *                 for pattern, arr in pre.precomputed_index.iteritems():   *                     phrases = self.pattern2phrase_plus(pattern)   */ -      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __pyx_t_6 = __pyx_v_pre->precomputed_index; +      __Pyx_INCREF(__pyx_t_6); +      __pyx_t_7 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __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[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_116)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_116)); +      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_116)); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); +      __Pyx_GIVEREF(__pyx_t_6); +      __pyx_t_6 = 0; +      __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6);        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __pyx_t_5 = __pyx_v_pre->precomputed_index; -      __Pyx_INCREF(__pyx_t_5); -      __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_113)); -      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_113)); -      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_113)); -      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); -      __Pyx_GIVEREF(__pyx_t_5); -      __pyx_t_5 = 0; -      __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 488; __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_3)); __pyx_t_3 = 0; -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":489 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":489   *             if self.use_index:   *                 logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))   *                 for pattern, arr in pre.precomputed_index.iteritems():             # <<<<<<<<<<<<<<   *                     phrases = self.pattern2phrase_plus(pattern)   *                     for phrase in phrases:   */ -      __pyx_t_5 = PyObject_GetAttr(__pyx_v_pre->precomputed_index, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -        __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; -        __pyx_t_7 = NULL; -      } else { -        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); -        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; +      __pyx_t_7 = 0; +      if (unlikely(__pyx_v_pre->precomputed_index == Py_None)) { +        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        } -      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      for (;;) { -        if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) { -          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; -          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; -        } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) { -          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; -          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; -        } else { -          __pyx_t_3 = __pyx_t_7(__pyx_t_5); -          if (unlikely(!__pyx_t_3)) { -            if (PyErr_Occurred()) { -              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            break; -          } -          __Pyx_GOTREF(__pyx_t_3); -        } -        if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { -          PyObject* sequence = __pyx_t_3; -          if (likely(PyTuple_CheckExact(sequence))) { -            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);  -            __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);  -          } else { -            if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            __pyx_t_4 = PyList_GET_ITEM(sequence, 0);  -            __pyx_t_2 = PyList_GET_ITEM(sequence, 1);  -          } -          __Pyx_INCREF(__pyx_t_4); -          __Pyx_INCREF(__pyx_t_2); -          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        } else { -          Py_ssize_t index = -1; -          __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; -          index = 0; __pyx_t_4 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed; -          __Pyx_GOTREF(__pyx_t_4); -          index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; -          __Pyx_GOTREF(__pyx_t_2); -          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          goto __pyx_L12_unpacking_done; -          __pyx_L11_unpacking_failed:; -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __pyx_L12_unpacking_done:; -        } +      __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_pre->precomputed_index, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_XDECREF(__pyx_t_6); +      __pyx_t_6 = __pyx_t_4; +      __pyx_t_4 = 0; +      while (1) { +        __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_8, &__pyx_t_7, &__pyx_t_4, &__pyx_t_5, NULL, __pyx_t_9); +        if (unlikely(__pyx_t_10 == 0)) break; +        if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        __Pyx_GOTREF(__pyx_t_5);          __Pyx_XDECREF(__pyx_v_pattern);          __pyx_v_pattern = __pyx_t_4;          __pyx_t_4 = 0;          __Pyx_XDECREF(__pyx_v_arr); -        __pyx_v_arr = __pyx_t_2; -        __pyx_t_2 = 0; +        __pyx_v_arr = __pyx_t_5; +        __pyx_t_5 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":490 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":490   *                 logger.info("Converting %d hash keys on precomputed inverted index... ", len(pre.precomputed_index))   *                 for pattern, arr in pre.precomputed_index.iteritems():   *                     phrases = self.pattern2phrase_plus(pattern)             # <<<<<<<<<<<<<<   *                     for phrase in phrases:   *                         self.precomputed_index[phrase] = arr   */ -        __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase_plus); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __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 = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase_plus); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __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[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4);          __Pyx_INCREF(__pyx_v_pattern); -        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_pattern); +        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pattern);          __Pyx_GIVEREF(__pyx_v_pattern); -        __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +        __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;          __Pyx_XDECREF(__pyx_v_phrases); -        __pyx_v_phrases = __pyx_t_4; -        __pyx_t_4 = 0; +        __pyx_v_phrases = __pyx_t_3; +        __pyx_t_3 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":491 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":491   *                 for pattern, arr in pre.precomputed_index.iteritems():   *                     phrases = self.pattern2phrase_plus(pattern)   *                     for phrase in phrases:             # <<<<<<<<<<<<<< @@ -41348,36 +41999,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py   *             if self.use_collocations:   */          if (PyList_CheckExact(__pyx_v_phrases) || PyTuple_CheckExact(__pyx_v_phrases)) { -          __pyx_t_4 = __pyx_v_phrases; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0; -          __pyx_t_11 = NULL; +          __pyx_t_3 = __pyx_v_phrases; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0; +          __pyx_t_12 = NULL;          } else { -          __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_phrases); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_11 = Py_TYPE(__pyx_t_4)->tp_iternext; +          __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_phrases); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3); +          __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext;          }          for (;;) { -          if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_4)) { -            if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break; -            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_2); __pyx_t_10++; -          } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_4)) { -            if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_2); __pyx_t_10++; +          if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_3)) { +            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_3)) { +            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif            } else { -            __pyx_t_2 = __pyx_t_11(__pyx_t_4); -            if (unlikely(!__pyx_t_2)) { +            __pyx_t_4 = __pyx_t_12(__pyx_t_3); +            if (unlikely(!__pyx_t_4)) {                if (PyErr_Occurred()) {                  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();                  else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                }                break;              } -            __Pyx_GOTREF(__pyx_t_2); +            __Pyx_GOTREF(__pyx_t_4);            }            __Pyx_XDECREF(__pyx_v_phrase); -          __pyx_v_phrase = __pyx_t_2; -          __pyx_t_2 = 0; +          __pyx_v_phrase = __pyx_t_4; +          __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":492 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":492   *                     phrases = self.pattern2phrase_plus(pattern)   *                     for phrase in phrases:   *                         self.precomputed_index[phrase] = arr             # <<<<<<<<<<<<<< @@ -41386,135 +42045,78 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py   */            if (PyObject_SetItem(__pyx_v_self->precomputed_index, __pyx_v_phrase, __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          } -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __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_L8;      }      __pyx_L8:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":493 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":493   *                     for phrase in phrases:   *                         self.precomputed_index[phrase] = arr   *             if self.use_collocations:             # <<<<<<<<<<<<<<   *                 logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))   *                 for pattern, arr in pre.precomputed_collocations.iteritems():   */ -    if (__pyx_v_self->use_collocations) { +    __pyx_t_2 = (__pyx_v_self->use_collocations != 0); +    if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":494 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":494   *                         self.precomputed_index[phrase] = arr   *             if self.use_collocations:   *                 logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))             # <<<<<<<<<<<<<<   *                 for pattern, arr in pre.precomputed_collocations.iteritems():   *                     phrase = self.pattern2phrase(pattern)   */ -      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s__info); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __pyx_t_6 = __pyx_v_pre->precomputed_collocations; +      __Pyx_INCREF(__pyx_t_6); +      __pyx_t_8 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __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[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __pyx_t_5 = __pyx_v_pre->precomputed_collocations; -      __Pyx_INCREF(__pyx_t_5); -      __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_114)); -      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_114)); -      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_114)); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5); -      __Pyx_GIVEREF(__pyx_t_5); -      __pyx_t_5 = 0; -      __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __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_t_5); __pyx_t_5 = 0; +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_117)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_117)); +      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_117)); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); +      __Pyx_GIVEREF(__pyx_t_6); +      __pyx_t_6 = 0; +      __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":495 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":495   *             if self.use_collocations:   *                 logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))   *                 for pattern, arr in pre.precomputed_collocations.iteritems():             # <<<<<<<<<<<<<<   *                     phrase = self.pattern2phrase(pattern)   *                     self.precomputed_collocations[phrase] = arr   */ -      __pyx_t_5 = PyObject_GetAttr(__pyx_v_pre->precomputed_collocations, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_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[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) { -        __pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; -        __pyx_t_7 = NULL; -      } else { -        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); -        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; +      __pyx_t_8 = 0; +      if (unlikely(__pyx_v_pre->precomputed_collocations == Py_None)) { +        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        } -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      for (;;) { -        if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) { -          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; -          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; -        } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) { -          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; -          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; -        } else { -          __pyx_t_2 = __pyx_t_7(__pyx_t_5); -          if (unlikely(!__pyx_t_2)) { -            if (PyErr_Occurred()) { -              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            break; -          } -          __Pyx_GOTREF(__pyx_t_2); -        } -        if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { -          PyObject* sequence = __pyx_t_2; -          if (likely(PyTuple_CheckExact(sequence))) { -            if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -              if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -              else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);  -            __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);  -          } else { -            if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -              if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -              else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            } -            __pyx_t_4 = PyList_GET_ITEM(sequence, 0);  -            __pyx_t_3 = PyList_GET_ITEM(sequence, 1);  -          } -          __Pyx_INCREF(__pyx_t_4); -          __Pyx_INCREF(__pyx_t_3); -          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        } else { -          Py_ssize_t index = -1; -          __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -          __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; -          index = 0; __pyx_t_4 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L18_unpacking_failed; -          __Pyx_GOTREF(__pyx_t_4); -          index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L18_unpacking_failed; -          __Pyx_GOTREF(__pyx_t_3); -          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          goto __pyx_L19_unpacking_done; -          __pyx_L18_unpacking_failed:; -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -          if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __pyx_L19_unpacking_done:; -        } +      __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_pre->precomputed_collocations, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_7), (&__pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_XDECREF(__pyx_t_6); +      __pyx_t_6 = __pyx_t_4; +      __pyx_t_4 = 0; +      while (1) { +        __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_7, &__pyx_t_8, &__pyx_t_4, &__pyx_t_3, NULL, __pyx_t_9); +        if (unlikely(__pyx_t_10 == 0)) break; +        if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        __Pyx_GOTREF(__pyx_t_3);          __Pyx_XDECREF(__pyx_v_pattern);          __pyx_v_pattern = __pyx_t_4;          __pyx_t_4 = 0; @@ -41522,29 +42124,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py          __pyx_v_arr = __pyx_t_3;          __pyx_t_3 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":496 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":496   *                 logger.info("Converting %d hash keys on precomputed collocations... ", len(pre.precomputed_collocations))   *                 for pattern, arr in pre.precomputed_collocations.iteritems():   *                     phrase = self.pattern2phrase(pattern)             # <<<<<<<<<<<<<<   *                     self.precomputed_collocations[phrase] = arr   *             stop_time = monitor_cpu()   */ -        __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __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[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__pattern2phrase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __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[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4);          __Pyx_INCREF(__pyx_v_pattern); -        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_pattern); +        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_pattern);          __Pyx_GIVEREF(__pyx_v_pattern); -        __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __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_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __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_XDECREF(__pyx_v_phrase); -        __pyx_v_phrase = __pyx_t_4; -        __pyx_t_4 = 0; +        __pyx_v_phrase = __pyx_t_5; +        __pyx_t_5 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":497 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":497   *                 for pattern, arr in pre.precomputed_collocations.iteritems():   *                     phrase = self.pattern2phrase(pattern)   *                     self.precomputed_collocations[phrase] = arr             # <<<<<<<<<<<<<< @@ -41553,53 +42155,53 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py   */          if (PyObject_SetItem(__pyx_v_self->precomputed_collocations, __pyx_v_phrase, __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        } -      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -      goto __pyx_L15; +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      goto __pyx_L13;      } -    __pyx_L15:; +    __pyx_L13:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":498 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":498   *                     phrase = self.pattern2phrase(pattern)   *                     self.precomputed_collocations[phrase] = arr   *             stop_time = monitor_cpu()             # <<<<<<<<<<<<<<   *             logger.info("Processing precomputations took %f seconds", stop_time - start_time)   *    */ -    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_6); +    __pyx_t_5 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __pyx_v_stop_time = __pyx_t_4; -    __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __pyx_v_stop_time = __pyx_t_5; +    __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":499 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":499   *                     self.precomputed_collocations[phrase] = arr   *             stop_time = monitor_cpu()   *             logger.info("Processing precomputations took %f seconds", stop_time - start_time)             # <<<<<<<<<<<<<<   *    *    */ -    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Subtract(__pyx_v_stop_time, __pyx_v_start_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_INCREF(((PyObject *)__pyx_kp_s_115)); -    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_115)); -    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_115)); -    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); -    __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s__info); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_6); +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +    __pyx_t_5 = PyNumber_Subtract(__pyx_v_stop_time, __pyx_v_start_time); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __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[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); +    __Pyx_INCREF(((PyObject *)__pyx_kp_s_118)); +    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_s_118)); +    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_118)); +    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_6, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      goto __pyx_L3;    }    __pyx_L3:; @@ -41607,11 +42209,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8precompute(struct __py    __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_8); +  __Pyx_XDECREF(__pyx_t_6);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -41638,7 +42239,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collo    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":502 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":502   *    *    *     def get_precomputed_collocation(self, phrase):             # <<<<<<<<<<<<<< @@ -41651,38 +42252,40 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collo    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; -  Py_ssize_t __pyx_t_3; -  PyObject *__pyx_t_4 = NULL; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL; +  Py_ssize_t __pyx_t_4;    PyObject *__pyx_t_5 = NULL; +  PyObject *__pyx_t_6 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_precomputed_collocation", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":503 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":503   *    *     def get_precomputed_collocation(self, phrase):   *         if phrase in self.precomputed_collocations:             # <<<<<<<<<<<<<<   *             arr = self.precomputed_collocations[phrase]   *             return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)   */ -  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self->precomputed_collocations, __pyx_v_phrase))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_phrase, __pyx_v_self->precomputed_collocations, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":504 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":504   *     def get_precomputed_collocation(self, phrase):   *         if phrase in self.precomputed_collocations:   *             arr = self.precomputed_collocations[phrase]             # <<<<<<<<<<<<<<   *             return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)   *         return None   */ -    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->precomputed_collocations, __pyx_v_phrase); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_v_arr = __pyx_t_2; -    __pyx_t_2 = 0; +    __pyx_t_3 = PyObject_GetItem(__pyx_v_self->precomputed_collocations, __pyx_v_phrase); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_v_arr = __pyx_t_3; +    __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":505 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":505   *         if phrase in self.precomputed_collocations:   *             arr = self.precomputed_collocations[phrase]   *             return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)             # <<<<<<<<<<<<<< @@ -41690,36 +42293,36 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collo   *    */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__arr), __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__arr_low), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_3 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__arr_high), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_v_phrase, __pyx_n_s__arity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __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[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(((PyObject *)__pyx_t_3)); +    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr), __pyx_v_arr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr_low), __pyx_int_0) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__arr_high), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__num_subpatterns), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_r = __pyx_t_4; -    __pyx_t_4 = 0; +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_phrase, __pyx_n_s__arity); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __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[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_6); +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +    __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__num_subpatterns), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_PhraseLocation)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_5); +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +    __pyx_r = __pyx_t_5; +    __pyx_t_5 = 0;      goto __pyx_L0;      goto __pyx_L3;    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":506 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":506   *             arr = self.precomputed_collocations[phrase]   *             return PhraseLocation(arr=arr, arr_low=0, arr_high=len(arr), num_subpatterns=phrase.arity()+1)   *         return None             # <<<<<<<<<<<<<< @@ -41734,9 +42337,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collo    __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_3);    __Pyx_XDECREF(__pyx_t_5); +  __Pyx_XDECREF(__pyx_t_6);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_precomputed_collocation", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -41746,7 +42349,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_10get_precomputed_collo    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":509 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":509   *    *    *     cdef int* baeza_yates_helper(self, int low1, int high1, int* arr1, int step1,             # <<<<<<<<<<<<<< @@ -41792,7 +42395,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("baeza_yates_helper", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":522 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":522   *         cdef Matching loc1, loc2   *    *         result = <int*> malloc(0*sizeof(int*))             # <<<<<<<<<<<<<< @@ -41801,7 +42404,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_result = ((int *)malloc((0 * (sizeof(int *))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":524 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":524   *         result = <int*> malloc(0*sizeof(int*))   *    *         d_first = 0             # <<<<<<<<<<<<<< @@ -41810,17 +42413,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_d_first = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":525 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":525   *    *         d_first = 0   *         if high1 - low1 > high2 - low2:             # <<<<<<<<<<<<<<   *             d_first = 1   *    */ -  __pyx_t_1 = ((__pyx_v_high1 - __pyx_v_low1) > (__pyx_v_high2 - __pyx_v_low2)); +  __pyx_t_1 = (((__pyx_v_high1 - __pyx_v_low1) > (__pyx_v_high2 - __pyx_v_low2)) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":526 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":526   *         d_first = 0   *         if high1 - low1 > high2 - low2:   *             d_first = 1             # <<<<<<<<<<<<<< @@ -41832,23 +42435,23 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":530 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":530   *         # First, check to see if we are at any of the recursive base cases   *         # Case 1: one of the sets is empty   *         if low1 >= high1 or low2 >= high2:             # <<<<<<<<<<<<<<   *             return result   *    */ -  __pyx_t_1 = (__pyx_v_low1 >= __pyx_v_high1); +  __pyx_t_1 = ((__pyx_v_low1 >= __pyx_v_high1) != 0);    if (!__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_low2 >= __pyx_v_high2); +    __pyx_t_2 = ((__pyx_v_low2 >= __pyx_v_high2) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":531 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":531   *         # Case 1: one of the sets is empty   *         if low1 >= high1 or low2 >= high2:   *             return result             # <<<<<<<<<<<<<< @@ -41861,7 +42464,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":534 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":534   *    *         # Case 2: sets are non-overlapping   *         assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -41870,7 +42473,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, (__pyx_v_high1 - __pyx_v_step1), __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":535 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":535   *         # Case 2: sets are non-overlapping   *         assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)   *         assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -41879,17 +42482,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_low2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":536 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":536   *         assign_matching(&loc1, arr1, high1-step1, step1, self.fda.sent_id.arr)   *         assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)   *         if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:             # <<<<<<<<<<<<<<   *             return result   *    */ -  __pyx_t_3 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == -1); +  __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == -1) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":537 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":537   *         assign_matching(&loc2, arr2, low2, step2, self.fda.sent_id.arr)   *         if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == -1:   *             return result             # <<<<<<<<<<<<<< @@ -41902,7 +42505,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":539 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":539   *             return result   *    *         assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -41911,7 +42514,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_low1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":540 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":540   *    *         assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)   *         assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -41920,17 +42523,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, (__pyx_v_high2 - __pyx_v_step2), __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":541 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":541   *         assign_matching(&loc1, arr1, low1, step1, self.fda.sent_id.arr)   *         assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)   *         if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:             # <<<<<<<<<<<<<<   *             return result   *    */ -  __pyx_t_3 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1); +  __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":542 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":542   *         assign_matching(&loc2, arr2, high2-step2, step2, self.fda.sent_id.arr)   *         if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:   *             return result             # <<<<<<<<<<<<<< @@ -41943,7 +42546,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":546 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":546   *         # Case 3: query set and data set do not meet size mismatch constraints;   *         # We use mergesort instead in this case   *         qsetsize = (high1-low1) / step1             # <<<<<<<<<<<<<< @@ -41952,16 +42555,28 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_t_4 = (__pyx_v_high1 - __pyx_v_low1);    if (unlikely(__pyx_v_step1 == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step1 == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_4))) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __pyx_v_qsetsize = __Pyx_div_int(__pyx_t_4, __pyx_v_step1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":547 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":547   *         # We use mergesort instead in this case   *         qsetsize = (high1-low1) / step1   *         dsetsize = (high2-low2) / step2             # <<<<<<<<<<<<<< @@ -41970,25 +42585,38 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_t_4 = (__pyx_v_high2 - __pyx_v_low2);    if (unlikely(__pyx_v_step2 == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    else if (sizeof(int) == sizeof(long) && unlikely(__pyx_v_step2 == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_4))) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __pyx_v_dsetsize = __Pyx_div_int(__pyx_t_4, __pyx_v_step2); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":548 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":548   *         qsetsize = (high1-low1) / step1   *         dsetsize = (high2-low2) / step2   *         if d_first:             # <<<<<<<<<<<<<<   *             tmp = qsetsize   *             qsetsize = dsetsize   */ -  if (__pyx_v_d_first) { +  __pyx_t_3 = (__pyx_v_d_first != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":549 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":549   *         dsetsize = (high2-low2) / step2   *         if d_first:   *             tmp = qsetsize             # <<<<<<<<<<<<<< @@ -41997,7 +42625,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_tmp = __pyx_v_qsetsize; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":550 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":550   *         if d_first:   *             tmp = qsetsize   *             qsetsize = dsetsize             # <<<<<<<<<<<<<< @@ -42006,7 +42634,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_qsetsize = __pyx_v_dsetsize; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":551 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":551   *             tmp = qsetsize   *             qsetsize = dsetsize   *             dsetsize = tmp             # <<<<<<<<<<<<<< @@ -42018,7 +42646,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L7:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":553 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":553   *             dsetsize = tmp   *    *         if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:             # <<<<<<<<<<<<<< @@ -42028,13 +42656,19 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    __pyx_t_5 = ((__pyx_v_self->by_slack_factor * __pyx_v_qsetsize) * log(__pyx_v_dsetsize));    __pyx_t_6 = log(2.0);    if (unlikely(__pyx_t_6 == 0)) { +    #ifdef WITH_THREAD +    PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +    #endif      PyErr_Format(PyExc_ZeroDivisionError, "float division"); +    #ifdef WITH_THREAD +    PyGILState_Release(__pyx_gilstate_save); +    #endif      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  __pyx_t_3 = ((__pyx_t_5 / __pyx_t_6) > __pyx_v_dsetsize); +  __pyx_t_3 = (((__pyx_t_5 / __pyx_t_6) > __pyx_v_dsetsize) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":554 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":554   *    *         if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:   *             free(result)             # <<<<<<<<<<<<<< @@ -42043,7 +42677,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      free(__pyx_v_result); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":555 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":555   *         if self.by_slack_factor * qsetsize * log(dsetsize) / log(2) > dsetsize:   *             free(result)   *             return self.merge_helper(low1, high1, arr1, step1, low2, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, result_len)             # <<<<<<<<<<<<<< @@ -42056,16 +42690,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L8:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":559 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":559   *         # binary search.    There are two flavors, depending on   *         # whether the queryset or dataset is first   *         if d_first:             # <<<<<<<<<<<<<<   *             med2 = median(low2, high2, step2)   *             assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)   */ -  if (__pyx_v_d_first) { +  __pyx_t_3 = (__pyx_v_d_first != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":560 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":560   *         # whether the queryset or dataset is first   *         if d_first:   *             med2 = median(low2, high2, step2)             # <<<<<<<<<<<<<< @@ -42074,7 +42709,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med2 = __pyx_f_3_sa_median(__pyx_v_low2, __pyx_v_high2, __pyx_v_step2); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":561 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":561   *         if d_first:   *             med2 = median(low2, high2, step2)   *             assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42083,7 +42718,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_med2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":563 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":563   *             assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)   *    *             search_low = low1             # <<<<<<<<<<<<<< @@ -42092,7 +42727,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_search_low = __pyx_v_low1; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":564 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":564   *    *             search_low = low1   *             search_high = high1             # <<<<<<<<<<<<<< @@ -42101,7 +42736,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_search_high = __pyx_v_high1; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":565 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":565   *             search_low = low1   *             search_high = high1   *             while search_low < search_high:             # <<<<<<<<<<<<<< @@ -42109,10 +42744,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   *                 find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)   */      while (1) { -      __pyx_t_3 = (__pyx_v_search_low < __pyx_v_search_high); +      __pyx_t_3 = ((__pyx_v_search_low < __pyx_v_search_high) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":566 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":566   *             search_high = high1   *             while search_low < search_high:   *                 med1 = median(search_low, search_high, step1)             # <<<<<<<<<<<<<< @@ -42121,7 +42756,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_med1 = __pyx_f_3_sa_median(__pyx_v_search_low, __pyx_v_search_high, __pyx_v_step1); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":567 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":567   *             while search_low < search_high:   *                 med1 = median(search_low, search_high, step1)   *                 find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)             # <<<<<<<<<<<<<< @@ -42130,7 +42765,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_f_3_sa_find_comparable_matchings(__pyx_v_low1, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med1, (&__pyx_v_med1_minus), (&__pyx_v_med1_plus)); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":568 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":568   *                 med1 = median(search_low, search_high, step1)   *                 find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)             # <<<<<<<<<<<<<< @@ -42139,7 +42774,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings_set(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":571 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":571   *                 if comparison == -1:   *                     search_low = med1_plus   *                 elif comparison == 1:             # <<<<<<<<<<<<<< @@ -42148,7 +42783,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        switch (__pyx_v_comparison) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":569 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":569   *                 find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)   *                 if comparison == -1:             # <<<<<<<<<<<<<< @@ -42157,7 +42792,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          case -1: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":570 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":570   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)   *                 if comparison == -1:   *                     search_low = med1_plus             # <<<<<<<<<<<<<< @@ -42167,7 +42802,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          __pyx_v_search_low = __pyx_v_med1_plus;          break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":571 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":571   *                 if comparison == -1:   *                     search_low = med1_plus   *                 elif comparison == 1:             # <<<<<<<<<<<<<< @@ -42176,7 +42811,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          case 1: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":572 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":572   *                     search_low = med1_plus   *                 elif comparison == 1:   *                     search_high = med1_minus             # <<<<<<<<<<<<<< @@ -42187,7 +42822,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          break;          default: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":574 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":574   *                     search_high = med1_minus   *                 else:   *                     break             # <<<<<<<<<<<<<< @@ -42203,7 +42838,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":576 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":576   *                     break   *         else:   *             med1 = median(low1, high1, step1)             # <<<<<<<<<<<<<< @@ -42212,7 +42847,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med1 = __pyx_f_3_sa_median(__pyx_v_low1, __pyx_v_high1, __pyx_v_step1); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":577 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":577   *         else:   *             med1 = median(low1, high1, step1)   *             find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)             # <<<<<<<<<<<<<< @@ -42221,7 +42856,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_f_3_sa_find_comparable_matchings(__pyx_v_low1, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med1, (&__pyx_v_med1_minus), (&__pyx_v_med1_plus)); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":579 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":579   *             find_comparable_matchings(low1, high1, arr1, step1, med1, &med1_minus, &med1_plus)   *    *             search_low = low2             # <<<<<<<<<<<<<< @@ -42230,7 +42865,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_search_low = __pyx_v_low2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":580 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":580   *    *             search_low = low2   *             search_high = high2             # <<<<<<<<<<<<<< @@ -42239,7 +42874,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_search_high = __pyx_v_high2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":581 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":581   *             search_low = low2   *             search_high = high2   *             while search_low < search_high:             # <<<<<<<<<<<<<< @@ -42247,10 +42882,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   *                 assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)   */      while (1) { -      __pyx_t_3 = (__pyx_v_search_low < __pyx_v_search_high); +      __pyx_t_3 = ((__pyx_v_search_low < __pyx_v_search_high) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":582 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":582   *             search_high = high2   *             while search_low < search_high:   *                 med2 = median(search_low, search_high, step2)             # <<<<<<<<<<<<<< @@ -42259,7 +42894,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_med2 = __pyx_f_3_sa_median(__pyx_v_search_low, __pyx_v_search_high, __pyx_v_step2); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":583 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":583   *             while search_low < search_high:   *                 med2 = median(search_low, search_high, step2)   *                 assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42268,7 +42903,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_med2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":584 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":584   *                 med2 = median(search_low, search_high, step2)   *                 assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)             # <<<<<<<<<<<<<< @@ -42277,7 +42912,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings_set(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":587 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":587   *                 if comparison == -1:   *                     search_high = med2   *                 elif comparison == 1:             # <<<<<<<<<<<<<< @@ -42286,7 +42921,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        switch (__pyx_v_comparison) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":585 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":585   *                 assign_matching(&loc2, arr2, med2, step2, self.fda.sent_id.arr)   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)   *                 if comparison == -1:             # <<<<<<<<<<<<<< @@ -42295,7 +42930,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          case -1: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":586 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":586   *                 comparison = self.compare_matchings_set(med1_minus, med1_plus, arr1, step1, &loc2, offset_by_one, len_last)   *                 if comparison == -1:   *                     search_high = med2             # <<<<<<<<<<<<<< @@ -42305,7 +42940,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          __pyx_v_search_high = __pyx_v_med2;          break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":587 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":587   *                 if comparison == -1:   *                     search_high = med2   *                 elif comparison == 1:             # <<<<<<<<<<<<<< @@ -42314,7 +42949,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          case 1: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":588 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":588   *                     search_high = med2   *                 elif comparison == 1:   *                     search_low = med2 + step2             # <<<<<<<<<<<<<< @@ -42325,7 +42960,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          break;          default: -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":590 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":590   *                     search_low = med2 + step2   *                 else:   *                     break             # <<<<<<<<<<<<<< @@ -42340,7 +42975,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L9:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":592 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":592   *                     break   *    *         med_result_len = 0             # <<<<<<<<<<<<<< @@ -42349,7 +42984,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_med_result_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":593 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":593   *    *         med_result_len = 0   *         med_result = <int*> malloc(0*sizeof(int*))             # <<<<<<<<<<<<<< @@ -42358,17 +42993,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_med_result = ((int *)malloc((0 * (sizeof(int *))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":594 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":594   *         med_result_len = 0   *         med_result = <int*> malloc(0*sizeof(int*))   *         if search_high > search_low:             # <<<<<<<<<<<<<<   *             # Then there is a match for the median element of Q   *             # What we want to find is the group of all bindings in the first set   */ -  __pyx_t_3 = (__pyx_v_search_high > __pyx_v_search_low); +  __pyx_t_3 = ((__pyx_v_search_high > __pyx_v_search_low) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":600 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":600   *             # want to store the bindings for all of those elements.    We can   *             # subsequently throw all of them away.   *             med2_minus = med2             # <<<<<<<<<<<<<< @@ -42377,7 +43012,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med2_minus = __pyx_v_med2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":601 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":601   *             # subsequently throw all of them away.   *             med2_minus = med2   *             med2_plus = med2 + step2             # <<<<<<<<<<<<<< @@ -42386,7 +43021,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med2_plus = (__pyx_v_med2 + __pyx_v_step2); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":602 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":602   *             med2_minus = med2   *             med2_plus = med2 + step2   *             i1 = med1_minus             # <<<<<<<<<<<<<< @@ -42395,7 +43030,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_i1 = __pyx_v_med1_minus; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":603 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":603   *             med2_plus = med2 + step2   *             i1 = med1_minus   *             while i1 < med1_plus:             # <<<<<<<<<<<<<< @@ -42403,10 +43038,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   *                 while med2_minus-step2 >= low2:   */      while (1) { -      __pyx_t_3 = (__pyx_v_i1 < __pyx_v_med1_plus); +      __pyx_t_3 = ((__pyx_v_i1 < __pyx_v_med1_plus) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":604 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":604   *             i1 = med1_minus   *             while i1 < med1_plus:   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42415,7 +43050,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":605 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":605   *             while i1 < med1_plus:   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *                 while med2_minus-step2 >= low2:             # <<<<<<<<<<<<<< @@ -42423,10 +43058,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   *                     if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:   */        while (1) { -        __pyx_t_3 = ((__pyx_v_med2_minus - __pyx_v_step2) >= __pyx_v_low2); +        __pyx_t_3 = (((__pyx_v_med2_minus - __pyx_v_step2) >= __pyx_v_low2) != 0);          if (!__pyx_t_3) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":606 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":606   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *                 while med2_minus-step2 >= low2:   *                     assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42435,17 +43070,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, (__pyx_v_med2_minus - __pyx_v_step2), __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":607 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":607   *                 while med2_minus-step2 >= low2:   *                     assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)   *                     if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:             # <<<<<<<<<<<<<<   *                         med2_minus = med2_minus - step2   *                     else:   */ -        __pyx_t_3 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) < 1); +        __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) < 1) != 0);          if (__pyx_t_3) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":608 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":608   *                     assign_matching(&loc2, arr2, med2_minus-step2, step2, self.fda.sent_id.arr)   *                     if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) < 1:   *                         med2_minus = med2_minus - step2             # <<<<<<<<<<<<<< @@ -42457,7 +43092,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":610 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":610   *                         med2_minus = med2_minus - step2   *                     else:   *                         break             # <<<<<<<<<<<<<< @@ -42470,7 +43105,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p        }        __pyx_L18_break:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":611 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":611   *                     else:   *                         break   *                 i2 = med2_minus             # <<<<<<<<<<<<<< @@ -42479,7 +43114,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_i2 = __pyx_v_med2_minus; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":612 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":612   *                         break   *                 i2 = med2_minus   *                 while i2 < high2:             # <<<<<<<<<<<<<< @@ -42487,10 +43122,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)   */        while (1) { -        __pyx_t_3 = (__pyx_v_i2 < __pyx_v_high2); +        __pyx_t_3 = ((__pyx_v_i2 < __pyx_v_high2) != 0);          if (!__pyx_t_3) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":613 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":613   *                 i2 = med2_minus   *                 while i2 < high2:   *                     assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42499,7 +43134,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_i2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":614 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":614   *                 while i2 < high2:   *                     assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)             # <<<<<<<<<<<<<< @@ -42508,17 +43143,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":615 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":615   *                     assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)   *                     if comparison == 0:             # <<<<<<<<<<<<<<   *                         pass   *                         med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)   */ -        __pyx_t_3 = (__pyx_v_comparison == 0); +        __pyx_t_3 = ((__pyx_v_comparison == 0) != 0);          if (__pyx_t_3) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":617 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":617   *                     if comparison == 0:   *                         pass   *                         med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)             # <<<<<<<<<<<<<< @@ -42530,17 +43165,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          }          __pyx_L22:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":618 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":618   *                         pass   *                         med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)   *                     if comparison == -1:             # <<<<<<<<<<<<<<   *                         break   *                     i2 = i2 + step2   */ -        __pyx_t_3 = (__pyx_v_comparison == -1); +        __pyx_t_3 = ((__pyx_v_comparison == -1) != 0);          if (__pyx_t_3) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":619 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":619   *                         med_result = append_combined_matching(med_result, &loc1, &loc2, offset_by_one, num_subpatterns, &med_result_len)   *                     if comparison == -1:   *                         break             # <<<<<<<<<<<<<< @@ -42552,7 +43187,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p          }          __pyx_L23:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":620 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":620   *                     if comparison == -1:   *                         break   *                     i2 = i2 + step2             # <<<<<<<<<<<<<< @@ -42563,17 +43198,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p        }        __pyx_L21_break:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":621 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":621   *                         break   *                     i2 = i2 + step2   *                 if i2 > med2_plus:             # <<<<<<<<<<<<<<   *                     med2_plus = i2   *                 i1 = i1 + step1   */ -      __pyx_t_3 = (__pyx_v_i2 > __pyx_v_med2_plus); +      __pyx_t_3 = ((__pyx_v_i2 > __pyx_v_med2_plus) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":622 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":622   *                     i2 = i2 + step2   *                 if i2 > med2_plus:   *                     med2_plus = i2             # <<<<<<<<<<<<<< @@ -42585,7 +43220,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p        }        __pyx_L24:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":623 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":623   *                 if i2 > med2_plus:   *                     med2_plus = i2   *                 i1 = i1 + step1             # <<<<<<<<<<<<<< @@ -42595,7 +43230,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p        __pyx_v_i1 = (__pyx_v_i1 + __pyx_v_step1);      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":625 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":625   *                 i1 = i1 + step1   *    *             tmp = med1_minus             # <<<<<<<<<<<<<< @@ -42604,7 +43239,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_tmp = __pyx_v_med1_minus; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":626 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":626   *    *             tmp = med1_minus   *             med1_minus = med1_plus             # <<<<<<<<<<<<<< @@ -42613,7 +43248,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med1_minus = __pyx_v_med1_plus; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":627 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":627   *             tmp = med1_minus   *             med1_minus = med1_plus   *             med1_plus = tmp             # <<<<<<<<<<<<<< @@ -42625,7 +43260,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":630 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":630   *         else:   *             # No match; need to figure out the point of division in D and Q   *             med2_minus = med2             # <<<<<<<<<<<<<< @@ -42634,7 +43269,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med2_minus = __pyx_v_med2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":631 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":631   *             # No match; need to figure out the point of division in D and Q   *             med2_minus = med2   *             med2_plus = med2             # <<<<<<<<<<<<<< @@ -42643,16 +43278,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */      __pyx_v_med2_plus = __pyx_v_med2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":632 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":632   *             med2_minus = med2   *             med2_plus = med2   *             if d_first:             # <<<<<<<<<<<<<<   *                 med2_minus = med2_minus + step2   *                 if comparison == -1:   */ -    if (__pyx_v_d_first) { +    __pyx_t_3 = (__pyx_v_d_first != 0); +    if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":633 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":633   *             med2_plus = med2   *             if d_first:   *                 med2_minus = med2_minus + step2             # <<<<<<<<<<<<<< @@ -42661,17 +43297,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_med2_minus = (__pyx_v_med2_minus + __pyx_v_step2); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":634 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":634   *             if d_first:   *                 med2_minus = med2_minus + step2   *                 if comparison == -1:             # <<<<<<<<<<<<<<   *                     med1_minus = med1_plus   *                 if comparison == 1:   */ -      __pyx_t_3 = (__pyx_v_comparison == -1); +      __pyx_t_3 = ((__pyx_v_comparison == -1) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":635 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":635   *                 med2_minus = med2_minus + step2   *                 if comparison == -1:   *                     med1_minus = med1_plus             # <<<<<<<<<<<<<< @@ -42683,17 +43319,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p        }        __pyx_L26:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":636 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":636   *                 if comparison == -1:   *                     med1_minus = med1_plus   *                 if comparison == 1:             # <<<<<<<<<<<<<<   *                     med1_plus = med1_minus   *             else:   */ -      __pyx_t_3 = (__pyx_v_comparison == 1); +      __pyx_t_3 = ((__pyx_v_comparison == 1) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":637 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":637   *                     med1_minus = med1_plus   *                 if comparison == 1:   *                     med1_plus = med1_minus             # <<<<<<<<<<<<<< @@ -42708,7 +43344,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":639 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":639   *                     med1_plus = med1_minus   *             else:   *                 tmp = med1_minus             # <<<<<<<<<<<<<< @@ -42717,7 +43353,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_tmp = __pyx_v_med1_minus; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":640 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":640   *             else:   *                 tmp = med1_minus   *                 med1_minus = med1_plus             # <<<<<<<<<<<<<< @@ -42726,7 +43362,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_med1_minus = __pyx_v_med1_plus; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":641 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":641   *                 tmp = med1_minus   *                 med1_minus = med1_plus   *                 med1_plus = tmp             # <<<<<<<<<<<<<< @@ -42735,17 +43371,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */        __pyx_v_med1_plus = __pyx_v_tmp; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":642 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":642   *                 med1_minus = med1_plus   *                 med1_plus = tmp   *                 if comparison == 1:             # <<<<<<<<<<<<<<   *                     med2_minus = med2_minus + step2   *                     med2_plus = med2_plus + step2   */ -      __pyx_t_3 = (__pyx_v_comparison == 1); +      __pyx_t_3 = ((__pyx_v_comparison == 1) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":643 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":643   *                 med1_plus = tmp   *                 if comparison == 1:   *                     med2_minus = med2_minus + step2             # <<<<<<<<<<<<<< @@ -42754,7 +43390,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */          __pyx_v_med2_minus = (__pyx_v_med2_minus + __pyx_v_step2); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":644 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":644   *                 if comparison == 1:   *                     med2_minus = med2_minus + step2   *                     med2_plus = med2_plus + step2             # <<<<<<<<<<<<<< @@ -42770,7 +43406,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    }    __pyx_L14:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":646 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":646   *                     med2_plus = med2_plus + step2   *    *         low_result_len = 0             # <<<<<<<<<<<<<< @@ -42779,7 +43415,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_low_result_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":647 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":647   *    *         low_result_len = 0   *         low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)             # <<<<<<<<<<<<<< @@ -42788,7 +43424,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_low_result = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->baeza_yates_helper(__pyx_v_self, __pyx_v_low1, __pyx_v_med1_plus, __pyx_v_arr1, __pyx_v_step1, __pyx_v_low2, __pyx_v_med2_plus, __pyx_v_arr2, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_low_result_len)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":648 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":648   *         low_result_len = 0   *         low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)   *         high_result_len = 0             # <<<<<<<<<<<<<< @@ -42797,7 +43433,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_high_result_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":649 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":649   *         low_result = self.baeza_yates_helper(low1, med1_plus, arr1, step1, low2, med2_plus, arr2, step2, offset_by_one, len_last, num_subpatterns, &low_result_len)   *         high_result_len = 0   *         high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)             # <<<<<<<<<<<<<< @@ -42806,7 +43442,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_high_result = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->baeza_yates_helper(__pyx_v_self, __pyx_v_med1_minus, __pyx_v_high1, __pyx_v_arr1, __pyx_v_step1, __pyx_v_med2_minus, __pyx_v_high2, __pyx_v_arr2, __pyx_v_step2, __pyx_v_offset_by_one, __pyx_v_len_last, __pyx_v_num_subpatterns, (&__pyx_v_high_result_len)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":651 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":651   *         high_result = self.baeza_yates_helper(med1_minus, high1, arr1, step1, med2_minus, high2, arr2, step2, offset_by_one, len_last, num_subpatterns, &high_result_len)   *    *         result = extend_arr(result, result_len, low_result, low_result_len)             # <<<<<<<<<<<<<< @@ -42815,7 +43451,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_low_result, __pyx_v_low_result_len); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":652 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":652   *    *         result = extend_arr(result, result_len, low_result, low_result_len)   *         result = extend_arr(result, result_len, med_result, med_result_len)             # <<<<<<<<<<<<<< @@ -42824,7 +43460,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_med_result, __pyx_v_med_result_len); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":653 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":653   *         result = extend_arr(result, result_len, low_result, low_result_len)   *         result = extend_arr(result, result_len, med_result, med_result_len)   *         result = extend_arr(result, result_len, high_result, high_result_len)             # <<<<<<<<<<<<<< @@ -42833,7 +43469,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    __pyx_v_result = __pyx_f_3_sa_extend_arr(__pyx_v_result, __pyx_v_result_len, __pyx_v_high_result, __pyx_v_high_result_len); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":654 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":654   *         result = extend_arr(result, result_len, med_result, med_result_len)   *         result = extend_arr(result, result_len, high_result, high_result_len)   *         free(low_result)             # <<<<<<<<<<<<<< @@ -42842,7 +43478,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    free(__pyx_v_low_result); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":655 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":655   *         result = extend_arr(result, result_len, high_result, high_result_len)   *         free(low_result)   *         free(med_result)             # <<<<<<<<<<<<<< @@ -42851,7 +43487,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    free(__pyx_v_med_result); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":656 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":656   *         free(low_result)   *         free(med_result)   *         free(high_result)             # <<<<<<<<<<<<<< @@ -42860,7 +43496,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p   */    free(__pyx_v_high_result); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":658 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":658   *         free(high_result)   *    *         return result             # <<<<<<<<<<<<<< @@ -42880,7 +43516,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper(struct __p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":662 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":662   *    *    *     cdef long compare_matchings_set(self, int i1_minus, int i1_plus, int* arr1, int step1,             # <<<<<<<<<<<<<< @@ -42899,7 +43535,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct    int __pyx_t_1;    __Pyx_RefNannySetupContext("compare_matchings_set", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":673 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":673   *         cdef Matching* loc1   *    *         loc1 = &l1_stack             # <<<<<<<<<<<<<< @@ -42908,7 +43544,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */    __pyx_v_loc1 = (&__pyx_v_l1_stack); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":675 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":675   *         loc1 = &l1_stack   *    *         i1 = i1_minus             # <<<<<<<<<<<<<< @@ -42917,7 +43553,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */    __pyx_v_i1 = __pyx_v_i1_minus; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":676 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":676   *    *         i1 = i1_minus   *         while i1 < i1_plus:             # <<<<<<<<<<<<<< @@ -42925,10 +43561,10 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   *             comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)   */    while (1) { -    __pyx_t_1 = (__pyx_v_i1 < __pyx_v_i1_plus); +    __pyx_t_1 = ((__pyx_v_i1 < __pyx_v_i1_plus) != 0);      if (!__pyx_t_1) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":677 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":677   *         i1 = i1_minus   *         while i1 < i1_plus:   *             assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -42937,7 +43573,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */      __pyx_f_3_sa_assign_matching(__pyx_v_loc1, __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":678 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":678   *         while i1 < i1_plus:   *             assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)   *             comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)             # <<<<<<<<<<<<<< @@ -42946,17 +43582,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */      __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, __pyx_v_loc1, __pyx_v_loc2, __pyx_v_offset_by_one, __pyx_v_len_last); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":679 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":679   *             assign_matching(loc1, arr1, i1, step1, self.fda.sent_id.arr)   *             comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)   *             if comparison == 0:             # <<<<<<<<<<<<<<   *                 prev_comparison = 0   *                 break   */ -    __pyx_t_1 = (__pyx_v_comparison == 0); +    __pyx_t_1 = ((__pyx_v_comparison == 0) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":680 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":680   *             comparison = self.compare_matchings(loc1, loc2, offset_by_one, len_last)   *             if comparison == 0:   *                 prev_comparison = 0             # <<<<<<<<<<<<<< @@ -42965,7 +43601,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */        __pyx_v_prev_comparison = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":681 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":681   *             if comparison == 0:   *                 prev_comparison = 0   *                 break             # <<<<<<<<<<<<<< @@ -42976,17 +43612,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct        goto __pyx_L5;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":682 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":682   *                 prev_comparison = 0   *                 break   *             elif i1 == i1_minus:             # <<<<<<<<<<<<<<   *                 prev_comparison = comparison   *             else:   */ -    __pyx_t_1 = (__pyx_v_i1 == __pyx_v_i1_minus); +    __pyx_t_1 = ((__pyx_v_i1 == __pyx_v_i1_minus) != 0);      if (__pyx_t_1) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":683 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":683   *                 break   *             elif i1 == i1_minus:   *                 prev_comparison = comparison             # <<<<<<<<<<<<<< @@ -42998,17 +43634,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":685 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":685   *                 prev_comparison = comparison   *             else:   *                 if comparison != prev_comparison:             # <<<<<<<<<<<<<<   *                     prev_comparison = 0   *                     break   */ -      __pyx_t_1 = (__pyx_v_comparison != __pyx_v_prev_comparison); +      __pyx_t_1 = ((__pyx_v_comparison != __pyx_v_prev_comparison) != 0);        if (__pyx_t_1) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":686 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":686   *             else:   *                 if comparison != prev_comparison:   *                     prev_comparison = 0             # <<<<<<<<<<<<<< @@ -43017,7 +43653,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct   */          __pyx_v_prev_comparison = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":687 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":687   *                 if comparison != prev_comparison:   *                     prev_comparison = 0   *                     break             # <<<<<<<<<<<<<< @@ -43031,7 +43667,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":688 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":688   *                     prev_comparison = 0   *                     break   *             i1 = i1 + step1             # <<<<<<<<<<<<<< @@ -43042,7 +43678,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct    }    __pyx_L4_break:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":689 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":689   *                     break   *             i1 = i1 + step1   *         return prev_comparison             # <<<<<<<<<<<<<< @@ -43058,7 +43694,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set(struct    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":692 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":692   *    *    *     cdef long compare_matchings(self, Matching* loc1, Matching* loc2, int offset_by_one, int len_last):             # <<<<<<<<<<<<<< @@ -43076,17 +43712,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    int __pyx_t_4;    __Pyx_RefNannySetupContext("compare_matchings", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":695 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":695   *         cdef int i   *    *         if loc1.sent_id > loc2.sent_id:             # <<<<<<<<<<<<<<   *             return 1   *         if loc2.sent_id > loc1.sent_id:   */ -  __pyx_t_1 = (__pyx_v_loc1->sent_id > __pyx_v_loc2->sent_id); +  __pyx_t_1 = ((__pyx_v_loc1->sent_id > __pyx_v_loc2->sent_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":696 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":696   *    *         if loc1.sent_id > loc2.sent_id:   *             return 1             # <<<<<<<<<<<<<< @@ -43099,17 +43735,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":697 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":697   *         if loc1.sent_id > loc2.sent_id:   *             return 1   *         if loc2.sent_id > loc1.sent_id:             # <<<<<<<<<<<<<<   *             return -1   *    */ -  __pyx_t_1 = (__pyx_v_loc2->sent_id > __pyx_v_loc1->sent_id); +  __pyx_t_1 = ((__pyx_v_loc2->sent_id > __pyx_v_loc1->sent_id) != 0);    if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":698 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":698   *             return 1   *         if loc2.sent_id > loc1.sent_id:   *             return -1             # <<<<<<<<<<<<<< @@ -43122,33 +43758,33 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":700 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":700   *             return -1   *    *         if loc1.size == 1 and loc2.size == 1:             # <<<<<<<<<<<<<<   *             if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:   *                 return 1   */ -  __pyx_t_1 = (__pyx_v_loc1->size == 1); +  __pyx_t_1 = ((__pyx_v_loc1->size == 1) != 0);    if (__pyx_t_1) { -    __pyx_t_2 = (__pyx_v_loc2->size == 1); +    __pyx_t_2 = ((__pyx_v_loc2->size == 1) != 0);      __pyx_t_3 = __pyx_t_2;    } else {      __pyx_t_3 = __pyx_t_1;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":701 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":701   *    *         if loc1.size == 1 and loc2.size == 1:   *             if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:             # <<<<<<<<<<<<<<   *                 return 1   *    */ -    __pyx_t_3 = (((__pyx_v_loc2->arr[__pyx_v_loc2->start]) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) <= __pyx_v_self->train_min_gap_size); +    __pyx_t_3 = ((((__pyx_v_loc2->arr[__pyx_v_loc2->start]) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) <= __pyx_v_self->train_min_gap_size) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":702 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":702   *         if loc1.size == 1 and loc2.size == 1:   *             if loc2.arr[loc2.start] - loc1.arr[loc1.start] <= self.train_min_gap_size:   *                 return 1             # <<<<<<<<<<<<<< @@ -43163,16 +43799,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py      goto __pyx_L5;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":704 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":704   *                 return 1   *    *         elif offset_by_one:             # <<<<<<<<<<<<<<   *             for i from 1 <= i < loc1.size:   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:   */ -  if (__pyx_v_offset_by_one) { +  __pyx_t_3 = (__pyx_v_offset_by_one != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":705 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":705   *    *         elif offset_by_one:   *             for i from 1 <= i < loc1.size:             # <<<<<<<<<<<<<< @@ -43182,17 +43819,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py      __pyx_t_4 = __pyx_v_loc1->size;      for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_4; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":706 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":706   *         elif offset_by_one:   *             for i from 1 <= i < loc1.size:   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:             # <<<<<<<<<<<<<<   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:   */ -      __pyx_t_3 = ((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])); +      __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":707 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":707   *             for i from 1 <= i < loc1.size:   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:   *                     return 1             # <<<<<<<<<<<<<< @@ -43205,17 +43842,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py        }        __pyx_L9:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":708 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":708   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i-1]:   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:             # <<<<<<<<<<<<<<   *                     return -1   *    */ -      __pyx_t_3 = ((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])); +      __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[((__pyx_v_loc2->start + __pyx_v_i) - 1)])) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":709 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":709   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i-1]:   *                     return -1             # <<<<<<<<<<<<<< @@ -43232,17 +43869,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":712 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":712   *    *         else:   *             if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:             # <<<<<<<<<<<<<<   *                 return 1   *             if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:   */ -    __pyx_t_3 = (((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) > (__pyx_v_loc2->arr[__pyx_v_loc2->start])); +    __pyx_t_3 = ((((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) > (__pyx_v_loc2->arr[__pyx_v_loc2->start])) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":713 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":713   *         else:   *             if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:   *                 return 1             # <<<<<<<<<<<<<< @@ -43255,17 +43892,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py      }      __pyx_L11:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":714 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":714   *             if loc1.arr[loc1.start]+1 > loc2.arr[loc2.start]:   *                 return 1   *             if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:             # <<<<<<<<<<<<<<   *                 return -1   *    */ -    __pyx_t_3 = (((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) < (__pyx_v_loc2->arr[__pyx_v_loc2->start])); +    __pyx_t_3 = ((((__pyx_v_loc1->arr[__pyx_v_loc1->start]) + 1) < (__pyx_v_loc2->arr[__pyx_v_loc2->start])) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":715 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":715   *                 return 1   *             if loc1.arr[loc1.start]+1 < loc2.arr[loc2.start]:   *                 return -1             # <<<<<<<<<<<<<< @@ -43278,7 +43915,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py      }      __pyx_L12:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":717 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":717   *                 return -1   *    *             for i from 1 <= i < loc1.size:             # <<<<<<<<<<<<<< @@ -43288,17 +43925,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py      __pyx_t_4 = __pyx_v_loc1->size;      for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_4; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":718 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":718   *    *             for i from 1 <= i < loc1.size:   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:             # <<<<<<<<<<<<<<   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:   */ -      __pyx_t_3 = ((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])); +      __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) > (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":719 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":719   *             for i from 1 <= i < loc1.size:   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:   *                     return 1             # <<<<<<<<<<<<<< @@ -43311,17 +43948,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py        }        __pyx_L15:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":720 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":720   *                 if loc1.arr[loc1.start+i] > loc2.arr[loc2.start+i]:   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:             # <<<<<<<<<<<<<<   *                     return -1   *    */ -      __pyx_t_3 = ((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])); +      __pyx_t_3 = (((__pyx_v_loc1->arr[(__pyx_v_loc1->start + __pyx_v_i)]) < (__pyx_v_loc2->arr[(__pyx_v_loc2->start + __pyx_v_i)])) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":721 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":721   *                     return 1   *                 if loc1.arr[loc1.start+i] < loc2.arr[loc2.start+i]:   *                     return -1             # <<<<<<<<<<<<<< @@ -43337,17 +43974,17 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":723 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":723   *                     return -1   *    *         if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:             # <<<<<<<<<<<<<<   *             return -1   *         return 0   */ -  __pyx_t_3 = ((((__pyx_v_loc2->arr[(__pyx_v_loc2->end - 1)]) + __pyx_v_len_last) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) > __pyx_v_self->train_max_initial_size); +  __pyx_t_3 = (((((__pyx_v_loc2->arr[(__pyx_v_loc2->end - 1)]) + __pyx_v_len_last) - (__pyx_v_loc1->arr[__pyx_v_loc1->start])) > __pyx_v_self->train_max_initial_size) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":724 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":724   *    *         if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:   *             return -1             # <<<<<<<<<<<<<< @@ -43360,7 +43997,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    }    __pyx_L17:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":725 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":725   *         if loc2.arr[loc2.end-1] + len_last - loc1.arr[loc1.start] > self.train_max_initial_size:   *             return -1   *         return 0             # <<<<<<<<<<<<<< @@ -43376,7 +44013,7 @@ static long __pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings(struct __py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":728 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":728   *    *    *     cdef int* merge_helper(self, int low1, int high1, int* arr1, int step1,             # <<<<<<<<<<<<<< @@ -43400,7 +44037,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj    int __pyx_t_3;    __Pyx_RefNannySetupContext("merge_helper", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":736 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":736   *         cdef Matching loc1, loc2   *    *         result_len[0] = 0             # <<<<<<<<<<<<<< @@ -43409,7 +44046,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */    (__pyx_v_result_len[0]) = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":737 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":737   *    *         result_len[0] = 0   *         result = <int*> malloc(0*sizeof(int))             # <<<<<<<<<<<<<< @@ -43418,7 +44055,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */    __pyx_v_result = ((int *)malloc((0 * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":739 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":739   *         result = <int*> malloc(0*sizeof(int))   *    *         i1 = low1             # <<<<<<<<<<<<<< @@ -43427,7 +44064,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */    __pyx_v_i1 = __pyx_v_low1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":740 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":740   *    *         i1 = low1   *         i2 = low2             # <<<<<<<<<<<<<< @@ -43436,7 +44073,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */    __pyx_v_i2 = __pyx_v_low2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":741 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":741   *         i1 = low1   *         i2 = low2   *         while i1 < high1 and i2 < high2:             # <<<<<<<<<<<<<< @@ -43444,16 +44081,16 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   *             # First, pop all unneeded loc2's off the stack   */    while (1) { -    __pyx_t_1 = (__pyx_v_i1 < __pyx_v_high1); +    __pyx_t_1 = ((__pyx_v_i1 < __pyx_v_high1) != 0);      if (__pyx_t_1) { -      __pyx_t_2 = (__pyx_v_i2 < __pyx_v_high2); +      __pyx_t_2 = ((__pyx_v_i2 < __pyx_v_high2) != 0);        __pyx_t_3 = __pyx_t_2;      } else {        __pyx_t_3 = __pyx_t_1;      }      if (!__pyx_t_3) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":744 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":744   *    *             # First, pop all unneeded loc2's off the stack   *             assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -43462,7 +44099,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */      __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":745 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":745   *             # First, pop all unneeded loc2's off the stack   *             assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *             while i2 < high2:             # <<<<<<<<<<<<<< @@ -43470,10 +44107,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   *                 if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:   */      while (1) { -      __pyx_t_3 = (__pyx_v_i2 < __pyx_v_high2); +      __pyx_t_3 = ((__pyx_v_i2 < __pyx_v_high2) != 0);        if (!__pyx_t_3) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":746 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":746   *             assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *             while i2 < high2:   *                 assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -43482,17 +44119,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */        __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_i2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":747 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":747   *             while i2 < high2:   *                 assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)   *                 if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:             # <<<<<<<<<<<<<<   *                     i2 = i2 + step2   *                 else:   */ -      __pyx_t_3 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1); +      __pyx_t_3 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last) == 1) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":748 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":748   *                 assign_matching(&loc2, arr2, i2, step2, self.fda.sent_id.arr)   *                 if self.compare_matchings(&loc1, &loc2, offset_by_one, len_last) == 1:   *                     i2 = i2 + step2             # <<<<<<<<<<<<<< @@ -43504,7 +44141,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":750 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":750   *                     i2 = i2 + step2   *                 else:   *                     break             # <<<<<<<<<<<<<< @@ -43517,7 +44154,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj      }      __pyx_L6_break:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":753 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":753   *    *             # Next: process all loc1's with the same starting val   *             j1 = i1             # <<<<<<<<<<<<<< @@ -43526,7 +44163,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */      __pyx_v_j1 = __pyx_v_i1; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":754 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":754   *             # Next: process all loc1's with the same starting val   *             j1 = i1   *             while i1 < high1 and arr1[j1] == arr1[i1]:             # <<<<<<<<<<<<<< @@ -43534,16 +44171,16 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   *                 j2 = i2   */      while (1) { -      __pyx_t_3 = (__pyx_v_i1 < __pyx_v_high1); +      __pyx_t_3 = ((__pyx_v_i1 < __pyx_v_high1) != 0);        if (__pyx_t_3) { -        __pyx_t_1 = ((__pyx_v_arr1[__pyx_v_j1]) == (__pyx_v_arr1[__pyx_v_i1])); +        __pyx_t_1 = (((__pyx_v_arr1[__pyx_v_j1]) == (__pyx_v_arr1[__pyx_v_i1])) != 0);          __pyx_t_2 = __pyx_t_1;        } else {          __pyx_t_2 = __pyx_t_3;        }        if (!__pyx_t_2) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":755 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":755   *             j1 = i1   *             while i1 < high1 and arr1[j1] == arr1[i1]:   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -43552,7 +44189,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */        __pyx_f_3_sa_assign_matching((&__pyx_v_loc1), __pyx_v_arr1, __pyx_v_i1, __pyx_v_step1, __pyx_v_self->fda->sent_id->arr); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":756 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":756   *             while i1 < high1 and arr1[j1] == arr1[i1]:   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *                 j2 = i2             # <<<<<<<<<<<<<< @@ -43561,7 +44198,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */        __pyx_v_j2 = __pyx_v_i2; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":757 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":757   *                 assign_matching(&loc1, arr1, i1, step1, self.fda.sent_id.arr)   *                 j2 = i2   *                 while j2 < high2:             # <<<<<<<<<<<<<< @@ -43569,10 +44206,10 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)   */        while (1) { -        __pyx_t_2 = (__pyx_v_j2 < __pyx_v_high2); +        __pyx_t_2 = ((__pyx_v_j2 < __pyx_v_high2) != 0);          if (!__pyx_t_2) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":758 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":758   *                 j2 = i2   *                 while j2 < high2:   *                     assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -43581,7 +44218,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */          __pyx_f_3_sa_assign_matching((&__pyx_v_loc2), __pyx_v_arr2, __pyx_v_j2, __pyx_v_step2, __pyx_v_self->fda->sent_id->arr); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":759 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":759   *                 while j2 < high2:   *                     assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)             # <<<<<<<<<<<<<< @@ -43590,17 +44227,17 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj   */          __pyx_v_comparison = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->compare_matchings(__pyx_v_self, (&__pyx_v_loc1), (&__pyx_v_loc2), __pyx_v_offset_by_one, __pyx_v_len_last); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":760 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":760   *                     assign_matching(&loc2, arr2, j2, step2, self.fda.sent_id.arr)   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)   *                     if comparison == 0:             # <<<<<<<<<<<<<<   *                         result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)   *                     if comparison == 1:   */ -        __pyx_t_2 = (__pyx_v_comparison == 0); +        __pyx_t_2 = ((__pyx_v_comparison == 0) != 0);          if (__pyx_t_2) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":761 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":761   *                     comparison = self.compare_matchings(&loc1, &loc2, offset_by_one, len_last)   *                     if comparison == 0:   *                         result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)             # <<<<<<<<<<<<<< @@ -43612,30 +44249,30 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj          }          __pyx_L12:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":762 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":762   *                     if comparison == 0:   *                         result = append_combined_matching(result, &loc1, &loc2, offset_by_one, num_subpatterns, result_len)   *                     if comparison == 1:             # <<<<<<<<<<<<<<   *                         pass   *                     if comparison == -1:   */ -        __pyx_t_2 = (__pyx_v_comparison == 1); +        __pyx_t_2 = ((__pyx_v_comparison == 1) != 0);          if (__pyx_t_2) {            goto __pyx_L13;          }          __pyx_L13:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":764 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":764   *                     if comparison == 1:   *                         pass   *                     if comparison == -1:             # <<<<<<<<<<<<<<   *                         break   *                     else:   */ -        __pyx_t_2 = (__pyx_v_comparison == -1); +        __pyx_t_2 = ((__pyx_v_comparison == -1) != 0);          if (__pyx_t_2) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":765 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":765   *                         pass   *                     if comparison == -1:   *                         break             # <<<<<<<<<<<<<< @@ -43647,7 +44284,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":767 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":767   *                         break   *                     else:   *                         j2 = j2 + step2             # <<<<<<<<<<<<<< @@ -43660,7 +44297,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj        }        __pyx_L11_break:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":768 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":768   *                     else:   *                         j2 = j2 + step2   *                 i1 = i1 + step1             # <<<<<<<<<<<<<< @@ -43671,7 +44308,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj      }    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":769 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":769   *                         j2 = j2 + step2   *                 i1 = i1 + step1   *         return result             # <<<<<<<<<<<<<< @@ -43687,7 +44324,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper(struct __pyx_obj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":772 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":772   *    *    *     cdef void sort_phrase_loc(self, IntList arr, PhraseLocation loc, Phrase phrase):             # <<<<<<<<<<<<<< @@ -43701,96 +44338,98 @@ static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_    struct __pyx_obj_3_sa_VEB *__pyx_v_veb = 0;    __Pyx_RefNannyDeclarations    int __pyx_t_1; -  PyObject *__pyx_t_2 = NULL; +  int __pyx_t_2;    PyObject *__pyx_t_3 = NULL; -  int __pyx_t_4; +  PyObject *__pyx_t_4 = NULL; +  int __pyx_t_5;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("sort_phrase_loc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":777 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":777   *         cdef IntList result   *    *         if phrase in self.precomputed_index:             # <<<<<<<<<<<<<<   *             loc.arr = self.precomputed_index[phrase]   *         else:   */ -  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self->precomputed_index, ((PyObject *)__pyx_v_phrase)))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_1) { +  __pyx_t_1 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_phrase), __pyx_v_self->precomputed_index, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = (__pyx_t_1 != 0); +  if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":778 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":778   *    *         if phrase in self.precomputed_index:   *             loc.arr = self.precomputed_index[phrase]             # <<<<<<<<<<<<<<   *         else:   *             loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)   */ -    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->precomputed_index, ((PyObject *)__pyx_v_phrase)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GIVEREF(__pyx_t_2); +    __pyx_t_3 = PyObject_GetItem(__pyx_v_self->precomputed_index, ((PyObject *)__pyx_v_phrase)); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __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_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GIVEREF(__pyx_t_3);      __Pyx_GOTREF(__pyx_v_loc->arr);      __Pyx_DECREF(((PyObject *)__pyx_v_loc->arr)); -    __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); -    __pyx_t_2 = 0; +    __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); +    __pyx_t_3 = 0;      goto __pyx_L3;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":780 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":780   *             loc.arr = self.precomputed_index[phrase]   *         else:   *             loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)             # <<<<<<<<<<<<<<   *             veb = VEB(arr.len)   *             for i from loc.sa_low <= i < loc.sa_high:   */ -    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -    __pyx_t_3 = PyInt_FromLong((__pyx_v_loc->sa_high - __pyx_v_loc->sa_low)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __Pyx_GIVEREF(__pyx_t_3); +    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(((PyObject *)__pyx_t_3)); +    __pyx_t_4 = PyInt_FromLong((__pyx_v_loc->sa_high - __pyx_v_loc->sa_low)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +    __Pyx_GIVEREF(__pyx_t_4);      __Pyx_GOTREF(__pyx_v_loc->arr);      __Pyx_DECREF(((PyObject *)__pyx_v_loc->arr)); -    __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); -    __pyx_t_3 = 0; +    __pyx_v_loc->arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_4); +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":781 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":781   *         else:   *             loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)   *             veb = VEB(arr.len)             # <<<<<<<<<<<<<<   *             for i from loc.sa_low <= i < loc.sa_high:   *                 veb._insert(arr.arr[i])   */ -    __pyx_t_3 = PyInt_FromLong(__pyx_v_arr->len); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __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 = 781; __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(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong(__pyx_v_arr->len); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __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[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_3); -    __pyx_t_3 = 0; +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); +    __Pyx_GIVEREF(__pyx_t_4); +    __pyx_t_4 = 0; +    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_VEB)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +    __pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)__pyx_t_4); +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":782 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":782   *             loc.arr = IntList(initial_len=loc.sa_high-loc.sa_low)   *             veb = VEB(arr.len)   *             for i from loc.sa_low <= i < loc.sa_high:             # <<<<<<<<<<<<<<   *                 veb._insert(arr.arr[i])   *             i = veb.veb.min_val   */ -    __pyx_t_4 = __pyx_v_loc->sa_high; -    for (__pyx_v_i = __pyx_v_loc->sa_low; __pyx_v_i < __pyx_t_4; __pyx_v_i++) { +    __pyx_t_5 = __pyx_v_loc->sa_high; +    for (__pyx_v_i = __pyx_v_loc->sa_low; __pyx_v_i < __pyx_t_5; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":783 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":783   *             veb = VEB(arr.len)   *             for i from loc.sa_low <= i < loc.sa_high:   *                 veb._insert(arr.arr[i])             # <<<<<<<<<<<<<< @@ -43800,26 +44439,27 @@ static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_        ((struct __pyx_vtabstruct_3_sa_VEB *)__pyx_v_veb->__pyx_vtab)->_insert(__pyx_v_veb, (__pyx_v_arr->arr[__pyx_v_i]));      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":784 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":784   *             for i from loc.sa_low <= i < loc.sa_high:   *                 veb._insert(arr.arr[i])   *             i = veb.veb.min_val             # <<<<<<<<<<<<<<   *             for j from 0 <= j < loc.sa_high-loc.sa_low:   *                 loc.arr.arr[j] = i   */ -    __pyx_v_i = __pyx_v_veb->veb->min_val; +    __pyx_t_5 = __pyx_v_veb->veb->min_val; +    __pyx_v_i = __pyx_t_5; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":785 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":785   *                 veb._insert(arr.arr[i])   *             i = veb.veb.min_val   *             for j from 0 <= j < loc.sa_high-loc.sa_low:             # <<<<<<<<<<<<<<   *                 loc.arr.arr[j] = i   *                 i = veb._findsucc(i)   */ -    __pyx_t_4 = (__pyx_v_loc->sa_high - __pyx_v_loc->sa_low); -    for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) { +    __pyx_t_5 = (__pyx_v_loc->sa_high - __pyx_v_loc->sa_low); +    for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_5; __pyx_v_j++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":786 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":786   *             i = veb.veb.min_val   *             for j from 0 <= j < loc.sa_high-loc.sa_low:   *                 loc.arr.arr[j] = i             # <<<<<<<<<<<<<< @@ -43828,7 +44468,7 @@ static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_   */        (__pyx_v_loc->arr->arr[__pyx_v_j]) = __pyx_v_i; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":787 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":787   *             for j from 0 <= j < loc.sa_high-loc.sa_low:   *                 loc.arr.arr[j] = i   *                 i = veb._findsucc(i)             # <<<<<<<<<<<<<< @@ -43840,7 +44480,7 @@ static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":788 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":788   *                 loc.arr.arr[j] = i   *                 i = veb._findsucc(i)   *         loc.arr_low = 0             # <<<<<<<<<<<<<< @@ -43849,26 +44489,27 @@ static void __pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc(struct __pyx_   */    __pyx_v_loc->arr_low = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":789 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":789   *                 i = veb._findsucc(i)   *         loc.arr_low = 0   *         loc.arr_high = loc.arr.len             # <<<<<<<<<<<<<<   *    *    */ -  __pyx_v_loc->arr_high = __pyx_v_loc->arr->len; +  __pyx_t_5 = __pyx_v_loc->arr->len; +  __pyx_v_loc->arr_high = __pyx_t_5;    goto __pyx_L0;    __pyx_L1_error:; -  __Pyx_XDECREF(__pyx_t_2);    __Pyx_XDECREF(__pyx_t_3); +  __Pyx_XDECREF(__pyx_t_4);    __Pyx_WriteUnraisable("_sa.HieroCachingRuleFactory.sort_phrase_loc", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_L0:;    __Pyx_XDECREF((PyObject *)__pyx_v_veb);    __Pyx_RefNannyFinishContext();  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":792 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":792   *    *    *     cdef intersect_helper(self, Phrase prefix, Phrase suffix,             # <<<<<<<<<<<<<< @@ -43905,7 +44546,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("intersect_helper", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":799 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":799   *         cdef int* result_ptr   *    *         result_len = 0             # <<<<<<<<<<<<<< @@ -43914,21 +44555,21 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */    __pyx_v_result_len = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":801 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":801   *         result_len = 0   *    *         if sym_isvar(suffix[0]):             # <<<<<<<<<<<<<<   *             offset_by_one = 1   *         else:   */ -  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_suffix), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_suffix), 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_3 = __pyx_f_3_sa_sym_isvar(__pyx_t_2); +  __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_t_2) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":802 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":802   *    *         if sym_isvar(suffix[0]):   *             offset_by_one = 1             # <<<<<<<<<<<<<< @@ -43940,7 +44581,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":804 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":804   *             offset_by_one = 1   *         else:   *             offset_by_one = 0             # <<<<<<<<<<<<<< @@ -43951,16 +44592,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":806 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":806   *             offset_by_one = 0   *    *         len_last = len(suffix.getchunk(suffix.arity()))             # <<<<<<<<<<<<<<   *    *         if prefix_loc.arr is None:   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_suffix), __pyx_n_s__getchunk); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_suffix), __pyx_n_s__getchunk); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_suffix), __pyx_n_s__arity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_suffix), __pyx_n_s__arity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __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[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_5); @@ -43978,17 +44619,18 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;    __pyx_v_len_last = __pyx_t_6; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":808 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":808   *         len_last = len(suffix.getchunk(suffix.arity()))   *    *         if prefix_loc.arr is None:             # <<<<<<<<<<<<<<   *             self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)   *         arr1 = prefix_loc.arr   */ -  __pyx_t_7 = (((PyObject *)__pyx_v_prefix_loc->arr) == Py_None); +  __pyx_t_3 = (((PyObject *)__pyx_v_prefix_loc->arr) == Py_None); +  __pyx_t_7 = (__pyx_t_3 != 0);    if (__pyx_t_7) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":809 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":809   *    *         if prefix_loc.arr is None:   *             self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)             # <<<<<<<<<<<<<< @@ -44003,44 +44645,49 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":810 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":810   *         if prefix_loc.arr is None:   *             self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)   *         arr1 = prefix_loc.arr             # <<<<<<<<<<<<<<   *         low1 = prefix_loc.arr_low   *         high1 = prefix_loc.arr_high   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_prefix_loc->arr)); -  __pyx_v_arr1 = __pyx_v_prefix_loc->arr; +  __pyx_t_5 = ((PyObject *)__pyx_v_prefix_loc->arr); +  __Pyx_INCREF(__pyx_t_5); +  __pyx_v_arr1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5); +  __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":811 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":811   *             self.sort_phrase_loc(self.fsa.sa, prefix_loc, prefix)   *         arr1 = prefix_loc.arr   *         low1 = prefix_loc.arr_low             # <<<<<<<<<<<<<<   *         high1 = prefix_loc.arr_high   *         step1 = prefix_loc.num_subpatterns   */ -  __pyx_v_low1 = __pyx_v_prefix_loc->arr_low; +  __pyx_t_2 = __pyx_v_prefix_loc->arr_low; +  __pyx_v_low1 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":812 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":812   *         arr1 = prefix_loc.arr   *         low1 = prefix_loc.arr_low   *         high1 = prefix_loc.arr_high             # <<<<<<<<<<<<<<   *         step1 = prefix_loc.num_subpatterns   *    */ -  __pyx_v_high1 = __pyx_v_prefix_loc->arr_high; +  __pyx_t_2 = __pyx_v_prefix_loc->arr_high; +  __pyx_v_high1 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":813 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":813   *         low1 = prefix_loc.arr_low   *         high1 = prefix_loc.arr_high   *         step1 = prefix_loc.num_subpatterns             # <<<<<<<<<<<<<<   *    *         if suffix_loc.arr is None:   */ -  __pyx_v_step1 = __pyx_v_prefix_loc->num_subpatterns; +  __pyx_t_2 = __pyx_v_prefix_loc->num_subpatterns; +  __pyx_v_step1 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":815 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":815   *         step1 = prefix_loc.num_subpatterns   *    *         if suffix_loc.arr is None:             # <<<<<<<<<<<<<< @@ -44048,9 +44695,10 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   *         arr2 = suffix_loc.arr   */    __pyx_t_7 = (((PyObject *)__pyx_v_suffix_loc->arr) == Py_None); -  if (__pyx_t_7) { +  __pyx_t_3 = (__pyx_t_7 != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":816 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":816   *    *         if suffix_loc.arr is None:   *             self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)             # <<<<<<<<<<<<<< @@ -44065,51 +44713,56 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":817 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":817   *         if suffix_loc.arr is None:   *             self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)   *         arr2 = suffix_loc.arr             # <<<<<<<<<<<<<<   *         low2 = suffix_loc.arr_low   *         high2 = suffix_loc.arr_high   */ -  __Pyx_INCREF(((PyObject *)__pyx_v_suffix_loc->arr)); -  __pyx_v_arr2 = __pyx_v_suffix_loc->arr; +  __pyx_t_5 = ((PyObject *)__pyx_v_suffix_loc->arr); +  __Pyx_INCREF(__pyx_t_5); +  __pyx_v_arr2 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5); +  __pyx_t_5 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":818 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":818   *             self.sort_phrase_loc(self.fsa.sa, suffix_loc, suffix)   *         arr2 = suffix_loc.arr   *         low2 = suffix_loc.arr_low             # <<<<<<<<<<<<<<   *         high2 = suffix_loc.arr_high   *         step2 = suffix_loc.num_subpatterns   */ -  __pyx_v_low2 = __pyx_v_suffix_loc->arr_low; +  __pyx_t_2 = __pyx_v_suffix_loc->arr_low; +  __pyx_v_low2 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":819 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":819   *         arr2 = suffix_loc.arr   *         low2 = suffix_loc.arr_low   *         high2 = suffix_loc.arr_high             # <<<<<<<<<<<<<<   *         step2 = suffix_loc.num_subpatterns   *    */ -  __pyx_v_high2 = __pyx_v_suffix_loc->arr_high; +  __pyx_t_2 = __pyx_v_suffix_loc->arr_high; +  __pyx_v_high2 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":820 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":820   *         low2 = suffix_loc.arr_low   *         high2 = suffix_loc.arr_high   *         step2 = suffix_loc.num_subpatterns             # <<<<<<<<<<<<<<   *    *         num_subpatterns = prefix.arity()+1   */ -  __pyx_v_step2 = __pyx_v_suffix_loc->num_subpatterns; +  __pyx_t_2 = __pyx_v_suffix_loc->num_subpatterns; +  __pyx_v_step2 = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":822 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":822   *         step2 = suffix_loc.num_subpatterns   *    *         num_subpatterns = prefix.arity()+1             # <<<<<<<<<<<<<<   *    *         if algorithm == MERGE:   */ -  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_prefix), __pyx_n_s__arity); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_prefix), __pyx_n_s__arity); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_5);    __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -44117,21 +44770,21 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_5);    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -  __pyx_v_num_subpatterns = __pyx_t_3; +  __pyx_v_num_subpatterns = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":824 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":824   *         num_subpatterns = prefix.arity()+1   *    *         if algorithm == MERGE:             # <<<<<<<<<<<<<<   *             result_ptr = self.merge_helper(low1, high1, arr1.arr, step1,   *                                     low2, high2, arr2.arr, step2,   */ -  __pyx_t_7 = (__pyx_v_algorithm == __pyx_v_3_sa_MERGE); -  if (__pyx_t_7) { +  __pyx_t_3 = ((__pyx_v_algorithm == __pyx_v_3_sa_MERGE) != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":827 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":827   *             result_ptr = self.merge_helper(low1, high1, arr1.arr, step1,   *                                     low2, high2, arr2.arr, step2,   *                                     offset_by_one, len_last, num_subpatterns, &result_len)             # <<<<<<<<<<<<<< @@ -44143,7 +44796,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":831 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":831   *             result_ptr = self.baeza_yates_helper(low1, high1, arr1.arr, step1,   *                                     low2, high2, arr2.arr, step2,   *                                     offset_by_one, len_last, num_subpatterns, &result_len)             # <<<<<<<<<<<<<< @@ -44154,17 +44807,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":833 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":833   *                                     offset_by_one, len_last, num_subpatterns, &result_len)   *    *         if result_len == 0:             # <<<<<<<<<<<<<<   *             free(result_ptr)   *             return None   */ -  __pyx_t_7 = (__pyx_v_result_len == 0); -  if (__pyx_t_7) { +  __pyx_t_3 = ((__pyx_v_result_len == 0) != 0); +  if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":834 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":834   *    *         if result_len == 0:   *             free(result_ptr)             # <<<<<<<<<<<<<< @@ -44173,7 +44826,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */      free(__pyx_v_result_ptr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":835 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":835   *         if result_len == 0:   *             free(result_ptr)   *             return None             # <<<<<<<<<<<<<< @@ -44188,7 +44841,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":837 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":837   *             return None   *         else:   *             result = IntList()             # <<<<<<<<<<<<<< @@ -44200,7 +44853,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct      __pyx_v_result = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_5);      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":838 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":838   *         else:   *             result = IntList()   *             free(result.arr)             # <<<<<<<<<<<<<< @@ -44209,7 +44862,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */      free(__pyx_v_result->arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":839 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":839   *             result = IntList()   *             free(result.arr)   *             result.arr = result_ptr             # <<<<<<<<<<<<<< @@ -44218,7 +44871,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */      __pyx_v_result->arr = __pyx_v_result_ptr; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":840 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":840   *             free(result.arr)   *             result.arr = result_ptr   *             result.len = result_len             # <<<<<<<<<<<<<< @@ -44227,7 +44880,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */      __pyx_v_result->len = __pyx_v_result_len; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":841 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":841   *             result.arr = result_ptr   *             result.len = result_len   *             result.size = result_len             # <<<<<<<<<<<<<< @@ -44236,7 +44889,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct   */      __pyx_v_result->size = __pyx_v_result_len; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":842 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":842   *             result.len = result_len   *             result.size = result_len   *             return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)             # <<<<<<<<<<<<<< @@ -44282,7 +44935,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper(struct    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":844 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":844   *             return PhraseLocation(arr_low=0, arr_high=result_len, arr=result, num_subpatterns=num_subpatterns)   *    *     cdef loc2str(self, PhraseLocation loc):             # <<<<<<<<<<<<<< @@ -44305,17 +44958,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("loc2str", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":846 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":846   *     cdef loc2str(self, PhraseLocation loc):   *         cdef int i, j   *         result = "{"             # <<<<<<<<<<<<<<   *         i = 0   *         while i < loc.arr_high:   */ -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_116)); -  __pyx_v_result = ((PyObject *)__pyx_kp_s_116); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_119)); +  __pyx_v_result = ((PyObject *)__pyx_kp_s_119); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":847 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":847   *         cdef int i, j   *         result = "{"   *         i = 0             # <<<<<<<<<<<<<< @@ -44324,7 +44977,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st   */    __pyx_v_i = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":848 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":848   *         result = "{"   *         i = 0   *         while i < loc.arr_high:             # <<<<<<<<<<<<<< @@ -44332,23 +44985,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st   *             for j from i <= j < i + loc.num_subpatterns:   */    while (1) { -    __pyx_t_1 = (__pyx_v_i < __pyx_v_loc->arr_high); +    __pyx_t_1 = ((__pyx_v_i < __pyx_v_loc->arr_high) != 0);      if (!__pyx_t_1) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":849 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":849   *         i = 0   *         while i < loc.arr_high:   *             result = result + "("             # <<<<<<<<<<<<<<   *             for j from i <= j < i + loc.num_subpatterns:   *                 result = result + ("%d " %loc.arr[j])   */ -    __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_117)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_120)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 849; __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; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":850 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":850   *         while i < loc.arr_high:   *             result = result + "("   *             for j from i <= j < i + loc.num_subpatterns:             # <<<<<<<<<<<<<< @@ -44358,16 +45011,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st      __pyx_t_3 = (__pyx_v_i + __pyx_v_loc->num_subpatterns);      for (__pyx_v_j = __pyx_v_i; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":851 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":851   *             result = result + "("   *             for j from i <= j < i + loc.num_subpatterns:   *                 result = result + ("%d " %loc.arr[j])             # <<<<<<<<<<<<<<   *             result = result + ")"   *             i = i + loc.num_subpatterns   */ -      __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_loc->arr), __pyx_v_j, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_loc->arr), __pyx_v_j, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_21), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_23), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_4));        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -44378,20 +45031,20 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st        __pyx_t_2 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":852 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":852   *             for j from i <= j < i + loc.num_subpatterns:   *                 result = result + ("%d " %loc.arr[j])   *             result = result + ")"             # <<<<<<<<<<<<<<   *             i = i + loc.num_subpatterns   *         result = result + "}"   */ -    __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_59)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_61)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 852; __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; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":853 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":853   *                 result = result + ("%d " %loc.arr[j])   *             result = result + ")"   *             i = i + loc.num_subpatterns             # <<<<<<<<<<<<<< @@ -44401,20 +45054,20 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st      __pyx_v_i = (__pyx_v_i + __pyx_v_loc->num_subpatterns);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":854 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":854   *             result = result + ")"   *             i = i + loc.num_subpatterns   *         result = result + "}"             # <<<<<<<<<<<<<<   *         return result   *    */ -  __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_118)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_kp_s_121)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 854; __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; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":855 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":855   *             i = i + loc.num_subpatterns   *         result = result + "}"   *         return result             # <<<<<<<<<<<<<< @@ -44440,7 +45093,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str(CYTHON_UNUSED st    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":857 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":857   *         return result   *    *     cdef PhraseLocation intersect(self, prefix_node, suffix_node, Phrase phrase):             # <<<<<<<<<<<<<< @@ -44461,71 +45114,72 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact    PyObject *__pyx_t_2 = NULL;    PyObject *__pyx_t_3 = NULL;    int __pyx_t_4; +  int __pyx_t_5;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("intersect", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":861 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":861   *         cdef PhraseLocation prefix_loc, suffix_loc, result   *    *         prefix = prefix_node.phrase             # <<<<<<<<<<<<<<   *         suffix = suffix_node.phrase   *         prefix_loc = prefix_node.phrase_location   */ -  __pyx_t_1 = PyObject_GetAttr(__pyx_v_prefix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __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_3_sa_Phrase))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_prefix = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":862 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":862   *    *         prefix = prefix_node.phrase   *         suffix = suffix_node.phrase             # <<<<<<<<<<<<<<   *         prefix_loc = prefix_node.phrase_location   *         suffix_loc = suffix_node.phrase_location   */ -  __pyx_t_1 = PyObject_GetAttr(__pyx_v_suffix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_suffix_node, __pyx_n_s__phrase); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __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_3_sa_Phrase))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_suffix = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":863 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":863   *         prefix = prefix_node.phrase   *         suffix = suffix_node.phrase   *         prefix_loc = prefix_node.phrase_location             # <<<<<<<<<<<<<<   *         suffix_loc = suffix_node.phrase_location   *    */ -  __pyx_t_1 = PyObject_GetAttr(__pyx_v_prefix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prefix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 863; __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_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_prefix_loc = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":864 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":864   *         suffix = suffix_node.phrase   *         prefix_loc = prefix_node.phrase_location   *         suffix_loc = suffix_node.phrase_location             # <<<<<<<<<<<<<<   *    *         result = self.get_precomputed_collocation(phrase)   */ -  __pyx_t_1 = PyObject_GetAttr(__pyx_v_suffix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_suffix_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 864; __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_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_suffix_loc = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":866 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":866   *         suffix_loc = suffix_node.phrase_location   *    *         result = self.get_precomputed_collocation(phrase)             # <<<<<<<<<<<<<<   *         if result is not None:   *             intersect_method = "precomputed"   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s_119); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_122); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __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 = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -44540,7 +45194,7 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact    __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":867 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":867   *    *         result = self.get_precomputed_collocation(phrase)   *         if result is not None:             # <<<<<<<<<<<<<< @@ -44548,9 +45202,10 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact   *    */    __pyx_t_4 = (((PyObject *)__pyx_v_result) != Py_None); -  if (__pyx_t_4) { +  __pyx_t_5 = (__pyx_t_4 != 0); +  if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":868 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":868   *         result = self.get_precomputed_collocation(phrase)   *         if result is not None:   *             intersect_method = "precomputed"             # <<<<<<<<<<<<<< @@ -44563,26 +45218,28 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":870 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":870   *             intersect_method = "precomputed"   *    *         if result is None:             # <<<<<<<<<<<<<<   *             if self.use_baeza_yates:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)   */ -  __pyx_t_4 = (((PyObject *)__pyx_v_result) == Py_None); +  __pyx_t_5 = (((PyObject *)__pyx_v_result) == Py_None); +  __pyx_t_4 = (__pyx_t_5 != 0);    if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":871 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":871   *    *         if result is None:   *             if self.use_baeza_yates:             # <<<<<<<<<<<<<<   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)   *                 intersect_method="double binary"   */ -    if (__pyx_v_self->use_baeza_yates) { +    __pyx_t_4 = (__pyx_v_self->use_baeza_yates != 0); +    if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":872 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":872   *         if result is None:   *             if self.use_baeza_yates:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)             # <<<<<<<<<<<<<< @@ -44596,21 +45253,21 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact        __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);        __pyx_t_3 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":873 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":873   *             if self.use_baeza_yates:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, BAEZA_YATES)   *                 intersect_method="double binary"             # <<<<<<<<<<<<<<   *             else:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)   */ -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_120)); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_123));        __Pyx_XDECREF(__pyx_v_intersect_method); -      __pyx_v_intersect_method = ((PyObject *)__pyx_kp_s_120); +      __pyx_v_intersect_method = ((PyObject *)__pyx_kp_s_123);        goto __pyx_L5;      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":875 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":875   *                 intersect_method="double binary"   *             else:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)             # <<<<<<<<<<<<<< @@ -44624,7 +45281,7 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact        __pyx_v_result = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);        __pyx_t_3 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":876 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":876   *             else:   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)   *                 intersect_method="merge"             # <<<<<<<<<<<<<< @@ -44640,7 +45297,7 @@ static struct __pyx_obj_3_sa_PhraseLocation *__pyx_f_3_sa_23HieroCachingRuleFact    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":877 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":877   *                 result = self.intersect_helper(prefix, suffix, prefix_loc, suffix_loc, MERGE)   *                 intersect_method="merge"   *         return result             # <<<<<<<<<<<<<< @@ -44678,11 +45335,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance(PyObject *__p    PyObject *__pyx_v_frontier = 0;    PyObject *__pyx_v_res = 0;    PyObject *__pyx_v_fwords = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__frontier,&__pyx_n_s__res,&__pyx_n_s__fwords,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("advance (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__frontier,&__pyx_n_s__res,&__pyx_n_s__fwords,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -44697,18 +45357,15 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance(PyObject *__p        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__frontier); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__frontier)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__res); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__res)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("advance", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("advance", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -44740,7 +45397,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance(PyObject *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":879 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":879   *         return result   *    *     def advance(self, frontier, res, fwords):             # <<<<<<<<<<<<<< @@ -44781,24 +45438,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("advance", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":881 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":881   *     def advance(self, frontier, res, fwords):   *         cdef unsigned na   *         nf = []             # <<<<<<<<<<<<<< - *         for (toskip, (i, alt, pathlen)) in frontier: + *         for toskip, (i, alt, pathlen) in frontier:   *             spanlen = fwords[i][alt][2]   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_nf = __pyx_t_1; +  __pyx_v_nf = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":882 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":882   *         cdef unsigned na   *         nf = [] - *         for (toskip, (i, alt, pathlen)) in frontier:             # <<<<<<<<<<<<<< + *         for toskip, (i, alt, pathlen) in frontier:             # <<<<<<<<<<<<<<   *             spanlen = fwords[i][alt][2] - *             if (toskip == 0): + *             if toskip == 0:   */    if (PyList_CheckExact(__pyx_v_frontier) || PyTuple_CheckExact(__pyx_v_frontier)) {      __pyx_t_1 = __pyx_v_frontier; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -44811,10 +45468,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -44828,27 +45493,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      }      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {        PyObject* sequence = __pyx_t_4; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 2)) { +        if (size > 2) __Pyx_RaiseTooManyValuesError(2); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyList_GET_ITEM(sequence, 0);           __pyx_t_6 = PyList_GET_ITEM(sequence, 1);         }        __Pyx_INCREF(__pyx_t_5);        __Pyx_INCREF(__pyx_t_6); +      #else +      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      #endif        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); @@ -44859,12 +45532,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;        __Pyx_GOTREF(__pyx_t_6);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L6_unpacking_done;        __pyx_L5_unpacking_failed:;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L6_unpacking_done:;      } @@ -44873,21 +45547,22 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      __pyx_t_5 = 0;      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {        PyObject* sequence = __pyx_t_6; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_10 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_7 = PyList_GET_ITEM(sequence, 0);           __pyx_t_9 = PyList_GET_ITEM(sequence, 1);           __pyx_t_10 = PyList_GET_ITEM(sequence, 2);  @@ -44895,8 +45570,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_        __Pyx_INCREF(__pyx_t_7);        __Pyx_INCREF(__pyx_t_9);        __Pyx_INCREF(__pyx_t_10); +      #else +      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_7); +      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_9); +      __pyx_t_10 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_10); +      #endif        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11); @@ -44909,12 +45593,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_        index = 2; __pyx_t_10 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L7_unpacking_failed;        __Pyx_GOTREF(__pyx_t_10);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        goto __pyx_L8_unpacking_done;        __pyx_L7_unpacking_failed:;        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L8_unpacking_done:;      } @@ -44928,11 +45613,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      __pyx_v_pathlen = __pyx_t_10;      __pyx_t_10 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":883 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":883   *         nf = [] - *         for (toskip, (i, alt, pathlen)) in frontier: + *         for toskip, (i, alt, pathlen) in frontier:   *             spanlen = fwords[i][alt][2]             # <<<<<<<<<<<<<< - *             if (toskip == 0): + *             if toskip == 0:   *                 res.append((i, alt, pathlen))   */      __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -44940,32 +45625,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      __pyx_t_6 = PyObject_GetItem(__pyx_t_4, __pyx_v_alt); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_XDECREF(__pyx_v_spanlen);      __pyx_v_spanlen = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":884 - *         for (toskip, (i, alt, pathlen)) in frontier: +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":884 + *         for toskip, (i, alt, pathlen) in frontier:   *             spanlen = fwords[i][alt][2] - *             if (toskip == 0):             # <<<<<<<<<<<<<< + *             if toskip == 0:             # <<<<<<<<<<<<<<   *                 res.append((i, alt, pathlen))   *             ni = i + spanlen   */ -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_toskip, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_toskip, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_12) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":885 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":885   *             spanlen = fwords[i][alt][2] - *             if (toskip == 0): + *             if toskip == 0:   *                 res.append((i, alt, pathlen))             # <<<<<<<<<<<<<<   *             ni = i + spanlen - *             if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size): + *             if ni < len(fwords) and pathlen + 1 < self.max_initial_size:   */        __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); @@ -44986,11 +45670,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      }      __pyx_L9:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":886 - *             if (toskip == 0): +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":886 + *             if toskip == 0:   *                 res.append((i, alt, pathlen))   *             ni = i + spanlen             # <<<<<<<<<<<<<< - *             if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size): + *             if ni < len(fwords) and pathlen + 1 < self.max_initial_size:   *                 for na in range(len(fwords[ni])):   */      __pyx_t_6 = PyNumber_Add(__pyx_v_i, __pyx_v_spanlen); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -44999,18 +45683,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      __pyx_v_ni = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":887 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":887   *                 res.append((i, alt, pathlen))   *             ni = i + spanlen - *             if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size):             # <<<<<<<<<<<<<< + *             if ni < len(fwords) and pathlen + 1 < self.max_initial_size:             # <<<<<<<<<<<<<<   *                 for na in range(len(fwords[ni])):   *                     nf.append((toskip - 1, (ni, na, pathlen + 1)))   */      __pyx_t_13 = PyObject_Length(__pyx_v_fwords); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_ni, __pyx_t_6, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_ni, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -45019,8 +45702,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_        __Pyx_GOTREF(__pyx_t_4);        __pyx_t_6 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -45031,12 +45713,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_      }      if (__pyx_t_15) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":888 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":888   *             ni = i + spanlen - *             if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size): + *             if ni < len(fwords) and pathlen + 1 < self.max_initial_size:   *                 for na in range(len(fwords[ni])):             # <<<<<<<<<<<<<<   *                     nf.append((toskip - 1, (ni, na, pathlen + 1))) - *         if (len(nf) > 0): + *         if len(nf) > 0:   */        __pyx_t_5 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ni); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); @@ -45045,11 +45727,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_13; __pyx_t_16+=1) {          __pyx_v_na = __pyx_t_16; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":889 - *             if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size): +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":889 + *             if ni < len(fwords) and pathlen + 1 < self.max_initial_size:   *                 for na in range(len(fwords[ni])):   *                     nf.append((toskip - 1, (ni, na, pathlen + 1)))             # <<<<<<<<<<<<<< - *         if (len(nf) > 0): + *         if len(nf) > 0:   *             return self.advance(nf, res, fwords)   */          __pyx_t_5 = PyNumber_Subtract(__pyx_v_toskip, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -45077,7 +45759,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_          __Pyx_GIVEREF(((PyObject *)__pyx_t_10));          __pyx_t_5 = 0;          __pyx_t_10 = 0; -        __pyx_t_17 = PyList_Append(__pyx_v_nf, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_17 = __Pyx_PyList_Append(__pyx_v_nf, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;        }        goto __pyx_L10; @@ -45086,26 +45768,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":890 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":890   *                 for na in range(len(fwords[ni])):   *                     nf.append((toskip - 1, (ni, na, pathlen + 1))) - *         if (len(nf) > 0):             # <<<<<<<<<<<<<< + *         if len(nf) > 0:             # <<<<<<<<<<<<<<   *             return self.advance(nf, res, fwords)   *         else:   */ -  __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_v_nf));  -  __pyx_t_15 = (__pyx_t_2 > 0); +  __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_v_nf)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_15 = ((__pyx_t_2 > 0) != 0);    if (__pyx_t_15) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":891 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":891   *                     nf.append((toskip - 1, (ni, na, pathlen + 1))) - *         if (len(nf) > 0): + *         if len(nf) > 0:   *             return self.advance(nf, res, fwords)             # <<<<<<<<<<<<<<   *         else:   *             return res   */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__advance); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__advance); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -45129,7 +45811,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12advance(struct __pyx_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":893 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":893   *             return self.advance(nf, res, fwords)   *         else:   *             return res             # <<<<<<<<<<<<<< @@ -45179,11 +45861,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_    PyObject *__pyx_v_fwords = 0;    PyObject *__pyx_v_next_states = 0;    PyObject *__pyx_v_reachable_buffer = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__skip,&__pyx_n_s__i,&__pyx_n_s__spanlen,&__pyx_n_s__pathlen,&__pyx_n_s__fwords,&__pyx_n_s__next_states,&__pyx_n_s__reachable_buffer,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("get_all_nodes_isteps_away (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__skip,&__pyx_n_s__i,&__pyx_n_s__spanlen,&__pyx_n_s__pathlen,&__pyx_n_s__fwords,&__pyx_n_s__next_states,&__pyx_n_s__reachable_buffer,0};      PyObject* values[7] = {0,0,0,0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -45202,42 +45887,35 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__skip); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__skip)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__spanlen); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__spanlen)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pathlen); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pathlen)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  4: -        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords); -        if (likely(values[4])) kw_args--; +        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  5: -        values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__next_states); -        if (likely(values[5])) kw_args--; +        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__next_states)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  6: -        values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reachable_buffer); -        if (likely(values[6])) kw_args--; +        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reachable_buffer)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_all_nodes_isteps_away", 1, 7, 7, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -45277,7 +45955,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":895 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":895   *             return res   *    *     def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):             # <<<<<<<<<<<<<< @@ -45301,36 +45979,37 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    Py_ssize_t __pyx_t_3;    PyObject *__pyx_t_4 = NULL;    int __pyx_t_5; -  PyObject *(*__pyx_t_6)(PyObject *); -  Py_ssize_t __pyx_t_7; -  PyObject *(*__pyx_t_8)(PyObject *); -  PyObject *__pyx_t_9 = NULL; +  int __pyx_t_6; +  PyObject *(*__pyx_t_7)(PyObject *); +  Py_ssize_t __pyx_t_8; +  PyObject *(*__pyx_t_9)(PyObject *);    PyObject *__pyx_t_10 = NULL; -  Py_ssize_t __pyx_t_11; -  PyObject *(*__pyx_t_12)(PyObject *); -  PyObject *__pyx_t_13 = NULL; -  int __pyx_t_14; +  PyObject *__pyx_t_11 = NULL; +  Py_ssize_t __pyx_t_12; +  PyObject *(*__pyx_t_13)(PyObject *); +  PyObject *__pyx_t_14 = NULL; +  int __pyx_t_15;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_all_nodes_isteps_away", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":897 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":897   *     def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):   *         cdef unsigned alt_it   *         frontier = []             # <<<<<<<<<<<<<< - *         if (i+spanlen+skip >= len(next_states)): + *         if i+spanlen+skip >= len(next_states):   *             return frontier   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_frontier = __pyx_t_1; +  __pyx_v_frontier = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":898 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":898   *         cdef unsigned alt_it   *         frontier = [] - *         if (i+spanlen+skip >= len(next_states)):             # <<<<<<<<<<<<<< + *         if i+spanlen+skip >= len(next_states):             # <<<<<<<<<<<<<<   *             return frontier   *         key = tuple([i,spanlen])   */ @@ -45342,17 +46021,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    __pyx_t_3 = PyObject_Length(__pyx_v_next_states); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_4); +  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":899 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":899   *         frontier = [] - *         if (i+spanlen+skip >= len(next_states)): + *         if i+spanlen+skip >= len(next_states):   *             return frontier             # <<<<<<<<<<<<<<   *         key = tuple([i,spanlen])   *         reachable = [] @@ -45365,12 +46043,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":900 - *         if (i+spanlen+skip >= len(next_states)): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":900 + *         if i+spanlen+skip >= len(next_states):   *             return frontier   *         key = tuple([i,spanlen])             # <<<<<<<<<<<<<<   *         reachable = [] - *         if (key in reachable_buffer): + *         if key in reachable_buffer:   */    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); @@ -45380,17 +46058,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    __Pyx_INCREF(__pyx_v_spanlen);    PyList_SET_ITEM(__pyx_t_4, 1, __pyx_v_spanlen);    __Pyx_GIVEREF(__pyx_v_spanlen); -  __pyx_t_1 = ((PyObject *)PyList_AsTuple(__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_4))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1));    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -  __pyx_v_key = __pyx_t_1; +  __pyx_v_key = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":901 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":901   *             return frontier   *         key = tuple([i,spanlen])   *         reachable = []             # <<<<<<<<<<<<<< - *         if (key in reachable_buffer): + *         if key in reachable_buffer:   *             reachable = reachable_buffer[key]   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -45398,19 +46076,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    __pyx_v_reachable = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":902 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":902   *         key = tuple([i,spanlen])   *         reachable = [] - *         if (key in reachable_buffer):             # <<<<<<<<<<<<<< + *         if key in reachable_buffer:             # <<<<<<<<<<<<<<   *             reachable = reachable_buffer[key]   *         else:   */ -  __pyx_t_5 = ((PySequence_Contains(__pyx_v_reachable_buffer, ((PyObject *)__pyx_v_key)))); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__pyx_t_5) { +  __pyx_t_5 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_key), __pyx_v_reachable_buffer, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = (__pyx_t_5 != 0); +  if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":903 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":903   *         reachable = [] - *         if (key in reachable_buffer): + *         if key in reachable_buffer:   *             reachable = reachable_buffer[key]             # <<<<<<<<<<<<<<   *         else:   *             reachable = self.reachable(fwords, i, spanlen) @@ -45424,14 +46103,14 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":905 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":905   *             reachable = reachable_buffer[key]   *         else:   *             reachable = self.reachable(fwords, i, spanlen)             # <<<<<<<<<<<<<<   *             reachable_buffer[key] = reachable   *         for nextreachable in reachable:   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); @@ -45452,7 +46131,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_      __pyx_v_reachable = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":906 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":906   *         else:   *             reachable = self.reachable(fwords, i, spanlen)   *             reachable_buffer[key] = reachable             # <<<<<<<<<<<<<< @@ -45463,7 +46142,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":907 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":907   *             reachable = self.reachable(fwords, i, spanlen)   *             reachable_buffer[key] = reachable   *         for nextreachable in reachable:             # <<<<<<<<<<<<<< @@ -45472,21 +46151,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_   */    if (PyList_CheckExact(__pyx_v_reachable) || PyTuple_CheckExact(__pyx_v_reachable)) {      __pyx_t_2 = __pyx_v_reachable; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; -    __pyx_t_6 = NULL; +    __pyx_t_7 = NULL;    } else {      __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_reachable); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; +    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext;    }    for (;;) { -    if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_2)) { +    if (!__pyx_t_7 && 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 (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_2)) { +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif +    } else if (!__pyx_t_7 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else { -      __pyx_t_4 = __pyx_t_6(__pyx_t_2); +      __pyx_t_4 = __pyx_t_7(__pyx_t_2);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -45500,7 +46187,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_      __pyx_v_nextreachable = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":908 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":908   *             reachable_buffer[key] = reachable   *         for nextreachable in reachable:   *             for next_id in next_states[nextreachable]:             # <<<<<<<<<<<<<< @@ -45510,23 +46197,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_      __pyx_t_4 = PyObject_GetItem(__pyx_v_next_states, __pyx_v_nextreachable); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __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_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; -      __pyx_t_8 = NULL; +      __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; +      __pyx_t_9 = NULL;      } else { -      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; +      __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext;      }      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      for (;;) { -      if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_1)) { -        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; -        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; -      } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_1)) { -        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; +      if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_1)) { +        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif +      } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_1)) { +        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else { -        __pyx_t_4 = __pyx_t_8(__pyx_t_1); +        __pyx_t_4 = __pyx_t_9(__pyx_t_1);          if (unlikely(!__pyx_t_4)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -45540,48 +46235,47 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_        __pyx_v_next_id = __pyx_t_4;        __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":909 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":909   *         for nextreachable in reachable:   *             for next_id in next_states[nextreachable]:   *                 jump = self.shortest(fwords,i,next_id)             # <<<<<<<<<<<<<<   *                 if jump < skip:   *                     continue   */ -      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); +      __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_10);        __Pyx_INCREF(__pyx_v_fwords); -      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_fwords); +      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_fwords);        __Pyx_GIVEREF(__pyx_v_fwords);        __Pyx_INCREF(__pyx_v_i); -      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_i); +      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_i);        __Pyx_GIVEREF(__pyx_v_i);        __Pyx_INCREF(__pyx_v_next_id); -      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_next_id); +      PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_next_id);        __Pyx_GIVEREF(__pyx_v_next_id); -      __pyx_t_10 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_10); +      __pyx_t_11 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;        __Pyx_XDECREF(__pyx_v_jump); -      __pyx_v_jump = __pyx_t_10; -      __pyx_t_10 = 0; +      __pyx_v_jump = __pyx_t_11; +      __pyx_t_11 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":910 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":910   *             for next_id in next_states[nextreachable]:   *                 jump = self.shortest(fwords,i,next_id)   *                 if jump < skip:             # <<<<<<<<<<<<<<   *                     continue   *                 if pathlen+jump <= self.max_initial_size:   */ -      __pyx_t_10 = PyObject_RichCompare(__pyx_v_jump, __pyx_v_skip, Py_LT); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_10); -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -      if (__pyx_t_5) { +      __pyx_t_11 = PyObject_RichCompare(__pyx_v_jump, __pyx_v_skip, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; +      if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":911 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":911   *                 jump = self.shortest(fwords,i,next_id)   *                 if jump < skip:   *                     continue             # <<<<<<<<<<<<<< @@ -45593,64 +46287,71 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_        }        __pyx_L9:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":912 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":912   *                 if jump < skip:   *                     continue   *                 if pathlen+jump <= self.max_initial_size:             # <<<<<<<<<<<<<<   *                     for alt_id in range(len(fwords[next_id])): - *                         if (fwords[next_id][alt_id][0] != EPSILON): + *                         if fwords[next_id][alt_id][0] != EPSILON:   */ -      __pyx_t_10 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_11); +      __pyx_t_10 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10); -      __pyx_t_9 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_10, __pyx_t_9, Py_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_4 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      if (__pyx_t_5) { +      if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":913 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":913   *                     continue   *                 if pathlen+jump <= self.max_initial_size:   *                     for alt_id in range(len(fwords[next_id])):             # <<<<<<<<<<<<<< - *                         if (fwords[next_id][alt_id][0] != EPSILON): + *                         if fwords[next_id][alt_id][0] != EPSILON:   *                             newel = (next_id,alt_id,pathlen+jump)   */          __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_next_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_11 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -        __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_9); -        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); +        __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_10); +        PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4);          __Pyx_GIVEREF(__pyx_t_4);          __pyx_t_4 = 0; -        __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4); -        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;          if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) { -          __pyx_t_9 = __pyx_t_4; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0; -          __pyx_t_12 = NULL; +          __pyx_t_10 = __pyx_t_4; __Pyx_INCREF(__pyx_t_10); __pyx_t_12 = 0; +          __pyx_t_13 = NULL;          } else { -          __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_9); -          __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; +          __pyx_t_12 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_10); +          __pyx_t_13 = Py_TYPE(__pyx_t_10)->tp_iternext;          }          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          for (;;) { -          if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_9)) { -            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_9)) break; -            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; -          } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_9)) { -            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_9)) break; -            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; +          if (!__pyx_t_13 && PyList_CheckExact(__pyx_t_10)) { +            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_10)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_4 = PySequence_ITEM(__pyx_t_10, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else if (!__pyx_t_13 && PyTuple_CheckExact(__pyx_t_10)) { +            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_10)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_4 = PySequence_ITEM(__pyx_t_10, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif            } else { -            __pyx_t_4 = __pyx_t_12(__pyx_t_9); +            __pyx_t_4 = __pyx_t_13(__pyx_t_10);              if (unlikely(!__pyx_t_4)) {                if (PyErr_Occurred()) {                  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -45664,87 +46365,87 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_            __pyx_v_alt_id = __pyx_t_4;            __pyx_t_4 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":914 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":914   *                 if pathlen+jump <= self.max_initial_size:   *                     for alt_id in range(len(fwords[next_id])): - *                         if (fwords[next_id][alt_id][0] != EPSILON):             # <<<<<<<<<<<<<< + *                         if fwords[next_id][alt_id][0] != EPSILON:             # <<<<<<<<<<<<<<   *                             newel = (next_id,alt_id,pathlen+jump)   *                             if newel not in frontier:   */            __pyx_t_4 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_next_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_4); -          __pyx_t_10 = PyObject_GetItem(__pyx_t_4, __pyx_v_alt_id); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_10); +          __pyx_t_11 = PyObject_GetItem(__pyx_t_4, __pyx_v_alt_id); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_11);            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_11, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_4); -          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __pyx_t_10 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_13 = PyObject_RichCompare(__pyx_t_4, __pyx_t_10, Py_NE); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_13); +          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; +          __pyx_t_11 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_11); +          __pyx_t_14 = PyObject_RichCompare(__pyx_t_4, __pyx_t_11, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -          if (__pyx_t_5) { +          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; +          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +          if (__pyx_t_6) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":915 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":915   *                     for alt_id in range(len(fwords[next_id])): - *                         if (fwords[next_id][alt_id][0] != EPSILON): + *                         if fwords[next_id][alt_id][0] != EPSILON:   *                             newel = (next_id,alt_id,pathlen+jump)             # <<<<<<<<<<<<<<   *                             if newel not in frontier:   *                                 frontier.append((next_id,alt_id,pathlen+jump))   */ -            __pyx_t_13 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_13); -            __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_10); +            __pyx_t_14 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_14); +            __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_11);              __Pyx_INCREF(__pyx_v_next_id); -            PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_next_id); +            PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_next_id);              __Pyx_GIVEREF(__pyx_v_next_id);              __Pyx_INCREF(__pyx_v_alt_id); -            PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_alt_id); +            PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_alt_id);              __Pyx_GIVEREF(__pyx_v_alt_id); -            PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_13); -            __Pyx_GIVEREF(__pyx_t_13); -            __pyx_t_13 = 0; +            PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_14); +            __Pyx_GIVEREF(__pyx_t_14); +            __pyx_t_14 = 0;              __Pyx_XDECREF(((PyObject *)__pyx_v_newel)); -            __pyx_v_newel = __pyx_t_10; -            __pyx_t_10 = 0; +            __pyx_v_newel = ((PyObject*)__pyx_t_11); +            __pyx_t_11 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":916 - *                         if (fwords[next_id][alt_id][0] != EPSILON): +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":916 + *                         if fwords[next_id][alt_id][0] != EPSILON:   *                             newel = (next_id,alt_id,pathlen+jump)   *                             if newel not in frontier:             # <<<<<<<<<<<<<<   *                                 frontier.append((next_id,alt_id,pathlen+jump))   *         return frontier   */ -            __pyx_t_5 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_frontier), ((PyObject *)__pyx_v_newel)))); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_6 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_newel), ((PyObject *)__pyx_v_frontier), Py_NE)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_5 = (__pyx_t_6 != 0);              if (__pyx_t_5) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":917 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":917   *                             newel = (next_id,alt_id,pathlen+jump)   *                             if newel not in frontier:   *                                 frontier.append((next_id,alt_id,pathlen+jump))             # <<<<<<<<<<<<<<   *         return frontier   *    */ -              __pyx_t_10 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_10); -              __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_13); +              __pyx_t_11 = PyNumber_Add(__pyx_v_pathlen, __pyx_v_jump); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_11); +              __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_14);                __Pyx_INCREF(__pyx_v_next_id); -              PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_next_id); +              PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_next_id);                __Pyx_GIVEREF(__pyx_v_next_id);                __Pyx_INCREF(__pyx_v_alt_id); -              PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_alt_id); +              PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_alt_id);                __Pyx_GIVEREF(__pyx_v_alt_id); -              PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_10); -              __Pyx_GIVEREF(__pyx_t_10); -              __pyx_t_10 = 0; -              __pyx_t_14 = PyList_Append(__pyx_v_frontier, ((PyObject *)__pyx_t_13)); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0; +              PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_11); +              __Pyx_GIVEREF(__pyx_t_11); +              __pyx_t_11 = 0; +              __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_frontier, ((PyObject *)__pyx_t_14)); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;                goto __pyx_L14;              }              __pyx_L14:; @@ -45752,7 +46453,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_            }            __pyx_L13:;          } -        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; +        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;          goto __pyx_L10;        }        __pyx_L10:; @@ -45762,7 +46463,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    }    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":918 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":918   *                             if newel not in frontier:   *                                 frontier.append((next_id,alt_id,pathlen+jump))   *         return frontier             # <<<<<<<<<<<<<< @@ -45780,9 +46481,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_14get_all_nodes_isteps_    __Pyx_XDECREF(__pyx_t_1);    __Pyx_XDECREF(__pyx_t_2);    __Pyx_XDECREF(__pyx_t_4); -  __Pyx_XDECREF(__pyx_t_9);    __Pyx_XDECREF(__pyx_t_10); -  __Pyx_XDECREF(__pyx_t_13); +  __Pyx_XDECREF(__pyx_t_11); +  __Pyx_XDECREF(__pyx_t_14);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_all_nodes_isteps_away", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -45805,11 +46506,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable(PyObject *_    PyObject *__pyx_v_fwords = 0;    PyObject *__pyx_v_ifrom = 0;    PyObject *__pyx_v_dist = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__dist,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("reachable (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__dist,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -45824,18 +46528,15 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable(PyObject *_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("reachable", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dist); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dist)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("reachable", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -45867,12 +46568,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable(PyObject *_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":920 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":920   *         return frontier   *    *     def reachable(self, fwords, ifrom, dist):             # <<<<<<<<<<<<<<   *         ret = [] - *         if (ifrom >= len(fwords)): + *         if ifrom >= len(fwords):   */  static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, PyObject *__pyx_v_fwords, PyObject *__pyx_v_ifrom, PyObject *__pyx_v_dist) { @@ -45890,48 +46591,48 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py    PyObject *__pyx_t_7 = NULL;    PyObject *__pyx_t_8 = NULL;    int __pyx_t_9; -  Py_ssize_t __pyx_t_10; -  PyObject *(*__pyx_t_11)(PyObject *); +  int __pyx_t_10; +  Py_ssize_t __pyx_t_11; +  PyObject *(*__pyx_t_12)(PyObject *);    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("reachable", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":921 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":921   *    *     def reachable(self, fwords, ifrom, dist):   *         ret = []             # <<<<<<<<<<<<<< - *         if (ifrom >= len(fwords)): + *         if ifrom >= len(fwords):   *             return ret   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_ret = __pyx_t_1; +  __pyx_v_ret = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":922 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":922   *     def reachable(self, fwords, ifrom, dist):   *         ret = [] - *         if (ifrom >= len(fwords)):             # <<<<<<<<<<<<<< + *         if ifrom >= len(fwords):             # <<<<<<<<<<<<<<   *             return ret   *         for alt_id in range(len(fwords[ifrom])):   */    __pyx_t_2 = PyObject_Length(__pyx_v_fwords); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_3 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_t_1, Py_GE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_3); +  __pyx_t_3 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":923 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":923   *         ret = [] - *         if (ifrom >= len(fwords)): + *         if ifrom >= len(fwords):   *             return ret             # <<<<<<<<<<<<<<   *         for alt_id in range(len(fwords[ifrom])): - *             if (fwords[ifrom][alt_id][0] == EPSILON): + *             if fwords[ifrom][alt_id][0] == EPSILON:   */      __Pyx_XDECREF(__pyx_r);      __Pyx_INCREF(((PyObject *)__pyx_v_ret)); @@ -45941,11 +46642,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":924 - *         if (ifrom >= len(fwords)): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":924 + *         if ifrom >= len(fwords):   *             return ret   *         for alt_id in range(len(fwords[ifrom])):             # <<<<<<<<<<<<<< - *             if (fwords[ifrom][alt_id][0] == EPSILON): + *             if fwords[ifrom][alt_id][0] == EPSILON:   *                 ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))   */    __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -45974,10 +46675,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_3 = __pyx_t_5(__pyx_t_1);        if (unlikely(!__pyx_t_3)) { @@ -45993,10 +46702,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py      __pyx_v_alt_id = __pyx_t_3;      __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":925 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":925   *             return ret   *         for alt_id in range(len(fwords[ifrom])): - *             if (fwords[ifrom][alt_id][0] == EPSILON):             # <<<<<<<<<<<<<< + *             if fwords[ifrom][alt_id][0] == EPSILON:             # <<<<<<<<<<<<<<   *                 ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))   *             else:   */ @@ -46005,36 +46714,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py      __pyx_t_6 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_t_6 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":926 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":926   *         for alt_id in range(len(fwords[ifrom])): - *             if (fwords[ifrom][alt_id][0] == EPSILON): + *             if fwords[ifrom][alt_id][0] == EPSILON:   *                 ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))             # <<<<<<<<<<<<<<   *             else: - *                 if (dist==0): + *                 if dist == 0:   */ -      __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_ret), __pyx_n_s__extend); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_ret), __pyx_n_s__extend); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __pyx_t_8 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_8, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_8, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __pyx_t_8 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -46069,37 +46777,37 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":928 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":928   *                 ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))   *             else: - *                 if (dist==0):             # <<<<<<<<<<<<<< - *                     if (ifrom not in ret): + *                 if dist == 0:             # <<<<<<<<<<<<<< + *                     if ifrom not in ret:   *                         ret.append(ifrom)   */ -      __pyx_t_8 = PyObject_RichCompare(__pyx_v_dist, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_8 = PyObject_RichCompare(__pyx_v_dist, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":929 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":929   *             else: - *                 if (dist==0): - *                     if (ifrom not in ret):             # <<<<<<<<<<<<<< + *                 if dist == 0: + *                     if ifrom not in ret:             # <<<<<<<<<<<<<<   *                         ret.append(ifrom)   *                 else:   */ -        __pyx_t_4 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_ret), __pyx_v_ifrom))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        if (__pyx_t_4) { +        __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_v_ifrom, ((PyObject *)__pyx_v_ret), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = (__pyx_t_4 != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":930 - *                 if (dist==0): - *                     if (ifrom not in ret): +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":930 + *                 if dist == 0: + *                     if ifrom not in ret:   *                         ret.append(ifrom)             # <<<<<<<<<<<<<<   *                 else:   *                     for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):   */ -          __pyx_t_9 = PyList_Append(__pyx_v_ret, __pyx_v_ifrom); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_ret, __pyx_v_ifrom); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            goto __pyx_L8;          }          __pyx_L8:; @@ -46107,21 +46815,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":932 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":932   *                         ret.append(ifrom)   *                 else:   *                     for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1):             # <<<<<<<<<<<<<< - *                         if (ifromchild not in ret): + *                         if ifromchild not in ret:   *                             ret.append(ifromchild)   */ -        __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__reachable); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8);          __pyx_t_3 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3);          __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_v_alt_id); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_7, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_7, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;          __pyx_t_7 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -46145,23 +46853,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;          __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;          if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -          __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0; -          __pyx_t_11 = NULL; +          __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_11 = 0; +          __pyx_t_12 = NULL;          } else { -          __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_11 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_6); -          __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; +          __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext;          }          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;          for (;;) { -          if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_6)) { -            if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break; -            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; -          } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_6)) { -            if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break; -            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; +          if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_6)) { +            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_6)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif +          } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_6)) { +            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_6)) break; +            #if CYTHON_COMPILING_IN_CPYTHON +            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #else +            __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            #endif            } else { -            __pyx_t_3 = __pyx_t_11(__pyx_t_6); +            __pyx_t_3 = __pyx_t_12(__pyx_t_6);              if (unlikely(!__pyx_t_3)) {                if (PyErr_Occurred()) {                  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -46175,24 +46891,25 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py            __pyx_v_ifromchild = __pyx_t_3;            __pyx_t_3 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":933 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":933   *                 else:   *                     for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1): - *                         if (ifromchild not in ret):             # <<<<<<<<<<<<<< + *                         if ifromchild not in ret:             # <<<<<<<<<<<<<<   *                             ret.append(ifromchild)   *    */ -          __pyx_t_4 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_ret), __pyx_v_ifromchild))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_v_ifromchild, ((PyObject *)__pyx_v_ret), Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_4 = (__pyx_t_9 != 0);            if (__pyx_t_4) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":934 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":934   *                     for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1): - *                         if (ifromchild not in ret): + *                         if ifromchild not in ret:   *                             ret.append(ifromchild)             # <<<<<<<<<<<<<<   *    *         return ret   */ -            __pyx_t_9 = PyList_Append(__pyx_v_ret, __pyx_v_ifromchild); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_ret, __pyx_v_ifromchild); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              goto __pyx_L11;            }            __pyx_L11:; @@ -46205,7 +46922,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_16reachable(struct __py    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":936 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":936   *                             ret.append(ifromchild)   *    *         return ret             # <<<<<<<<<<<<<< @@ -46242,11 +46959,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest(PyObject *__    PyObject *__pyx_v_fwords = 0;    PyObject *__pyx_v_ifrom = 0;    PyObject *__pyx_v_ito = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__ito,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("shortest (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__ifrom,&__pyx_n_s__ito,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -46261,18 +46981,15 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest(PyObject *__        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ifrom)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("shortest", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ito); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ito)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("shortest", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -46304,7 +47021,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest(PyObject *__    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":938 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":938   *         return ret   *    *     def shortest(self, fwords, ifrom, ito):             # <<<<<<<<<<<<<< @@ -46329,34 +47046,33 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("shortest", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":940 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":940   *     def shortest(self, fwords, ifrom, ito):   *         cdef unsigned alt_id   *         min = 1000             # <<<<<<<<<<<<<< - *         if (ifrom > ito): + *         if ifrom > ito:   *             return min   */    __Pyx_INCREF(__pyx_int_1000);    __pyx_v_min = __pyx_int_1000; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":941 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":941   *         cdef unsigned alt_id   *         min = 1000 - *         if (ifrom > ito):             # <<<<<<<<<<<<<< + *         if ifrom > ito:             # <<<<<<<<<<<<<<   *             return min - *         if (ifrom == ito): + *         if ifrom == ito:   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":942 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":942   *         min = 1000 - *         if (ifrom > ito): + *         if ifrom > ito:   *             return min             # <<<<<<<<<<<<<< - *         if (ifrom == ito): + *         if ifrom == ito:   *             return 0   */      __Pyx_XDECREF(__pyx_r); @@ -46367,22 +47083,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":943 - *         if (ifrom > ito): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":943 + *         if ifrom > ito:   *             return min - *         if (ifrom == ito):             # <<<<<<<<<<<<<< + *         if ifrom == ito:             # <<<<<<<<<<<<<<   *             return 0   *         for alt_id in range(len(fwords[ifrom])):   */ -  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_v_ifrom, __pyx_v_ito, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":944 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":944   *             return min - *         if (ifrom == ito): + *         if ifrom == ito:   *             return 0             # <<<<<<<<<<<<<<   *         for alt_id in range(len(fwords[ifrom])):   *             currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) @@ -46395,12 +47110,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":945 - *         if (ifrom == ito): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":945 + *         if ifrom == ito:   *             return 0   *         for alt_id in range(len(fwords[ifrom])):             # <<<<<<<<<<<<<<   *             currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) - *             if (fwords[ifrom][alt_id][0] != EPSILON): + *             if fwords[ifrom][alt_id][0] != EPSILON:   */    __pyx_t_1 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); @@ -46409,21 +47124,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {      __pyx_v_alt_id = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":946 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":946   *             return 0   *         for alt_id in range(len(fwords[ifrom])):   *             currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito)             # <<<<<<<<<<<<<< - *             if (fwords[ifrom][alt_id][0] != EPSILON): + *             if fwords[ifrom][alt_id][0] != EPSILON:   *                 currmin += 1   */ -    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__shortest); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_5 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __pyx_t_6 = PyNumber_Add(__pyx_v_ifrom, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -46448,36 +47163,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx      __pyx_v_currmin = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":947 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":947   *         for alt_id in range(len(fwords[ifrom])):   *             currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) - *             if (fwords[ifrom][alt_id][0] != EPSILON):             # <<<<<<<<<<<<<< + *             if fwords[ifrom][alt_id][0] != EPSILON:             # <<<<<<<<<<<<<<   *                 currmin += 1 - *             if (currmin<min): + *             if currmin < min:   */      __pyx_t_6 = PyObject_GetItem(__pyx_v_fwords, __pyx_v_ifrom); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_alt_id, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __pyx_t_5 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __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_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":948 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":948   *             currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) - *             if (fwords[ifrom][alt_id][0] != EPSILON): + *             if fwords[ifrom][alt_id][0] != EPSILON:   *                 currmin += 1             # <<<<<<<<<<<<<< - *             if (currmin<min): + *             if currmin < min:   *                 min = currmin   */        __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_currmin, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -46489,22 +47203,21 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx      }      __pyx_L7:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":949 - *             if (fwords[ifrom][alt_id][0] != EPSILON): +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":949 + *             if fwords[ifrom][alt_id][0] != EPSILON:   *                 currmin += 1 - *             if (currmin<min):             # <<<<<<<<<<<<<< + *             if currmin < min:             # <<<<<<<<<<<<<<   *                 min = currmin   *         return min   */ -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_currmin, __pyx_v_min, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_currmin, __pyx_v_min, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":950 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":950   *                 currmin += 1 - *             if (currmin<min): + *             if currmin < min:   *                 min = currmin             # <<<<<<<<<<<<<<   *         return min   *  @@ -46517,8 +47230,8 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_18shortest(struct __pyx      __pyx_L8:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":951 - *             if (currmin<min): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":951 + *             if currmin < min:   *                 min = currmin   *         return min             # <<<<<<<<<<<<<<   *  @@ -46551,11 +47264,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states(PyObj    PyObject *__pyx_v__columns = 0;    PyObject *__pyx_v_curr_idx = 0;    PyObject *__pyx_v_min_dist = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___columns,&__pyx_n_s__curr_idx,&__pyx_n_s__min_dist,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("get_next_states (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___columns,&__pyx_n_s__curr_idx,&__pyx_n_s__min_dist,0};      PyObject* values[3] = {0,0,0};      values[2] = ((PyObject *)__pyx_int_2);      if (unlikely(__pyx_kwds)) { @@ -46571,12 +47287,10 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states(PyObj        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___columns); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___columns)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__curr_idx); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__curr_idx)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("get_next_states", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -46615,7 +47329,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states(PyObj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":953 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":953   *         return min   *    *     def get_next_states(self, _columns, curr_idx, min_dist=2):             # <<<<<<<<<<<<<< @@ -46648,7 +47362,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_next_states", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":954 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":954   *    *     def get_next_states(self, _columns, curr_idx, min_dist=2):   *         result = []             # <<<<<<<<<<<<<< @@ -46657,10 +47371,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc   */    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_v_result = __pyx_t_1; +  __pyx_v_result = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":955 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":955   *     def get_next_states(self, _columns, curr_idx, min_dist=2):   *         result = []   *         candidate = [[curr_idx,0]]             # <<<<<<<<<<<<<< @@ -46680,10 +47394,10 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc    PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1));    __pyx_t_1 = 0; -  __pyx_v_candidate = __pyx_t_2; +  __pyx_v_candidate = ((PyObject*)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":957 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":957   *         candidate = [[curr_idx,0]]   *    *         while len(candidate) > 0:             # <<<<<<<<<<<<<< @@ -46691,11 +47405,11 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc   *             if curr[0] >= len(_columns):   */    while (1) { -    __pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_candidate));  -    __pyx_t_4 = (__pyx_t_3 > 0); +    __pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_candidate)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = ((__pyx_t_3 > 0) != 0);      if (!__pyx_t_4) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":958 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":958   *    *         while len(candidate) > 0:   *             curr = candidate.pop()             # <<<<<<<<<<<<<< @@ -46708,27 +47422,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      __pyx_v_curr = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":959 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":959   *         while len(candidate) > 0:   *             curr = candidate.pop()   *             if curr[0] >= len(_columns):             # <<<<<<<<<<<<<<   *                 continue   *             if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_3 = PyObject_Length(__pyx_v__columns); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_5); +    __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":960 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":960   *             curr = candidate.pop()   *             if curr[0] >= len(_columns):   *                 continue             # <<<<<<<<<<<<<< @@ -46740,28 +47453,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":961 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":961   *             if curr[0] >= len(_columns):   *                 continue   *             if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:             # <<<<<<<<<<<<<<   *                 result.append(curr[0]);   *             curr_col = _columns[curr[0]]   */ -    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_4 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_result), __pyx_t_5))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = (__Pyx_PySequence_Contains(__pyx_t_5, ((PyObject *)__pyx_v_result), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      if (__pyx_t_4) { -      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_min_dist, __pyx_t_5, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_min_dist, __pyx_t_5, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {          __Pyx_DECREF(__pyx_t_1);          __pyx_t_2 = PyInt_FromLong(__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        }        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -46773,29 +47484,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      }      if (__pyx_t_7) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":962 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":962   *                 continue   *             if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:   *                 result.append(curr[0]);             # <<<<<<<<<<<<<<   *             curr_col = _columns[curr[0]]   *             for alt in curr_col:   */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_8 = PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        goto __pyx_L6;      }      __pyx_L6:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":963 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":963   *             if curr[0] not in result and min_dist <= curr[1] <= self.max_initial_size:   *                 result.append(curr[0]);   *             curr_col = _columns[curr[0]]             # <<<<<<<<<<<<<<   *             for alt in curr_col:   *                 next_id = curr[0]+alt[2]   */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_5 = PyObject_GetItem(__pyx_v__columns, __pyx_t_1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); @@ -46804,7 +47515,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      __pyx_v_curr_col = __pyx_t_5;      __pyx_t_5 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":964 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":964   *                 result.append(curr[0]);   *             curr_col = _columns[curr[0]]   *             for alt in curr_col:             # <<<<<<<<<<<<<< @@ -46822,10 +47533,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      for (;;) {        if (!__pyx_t_9 && PyList_CheckExact(__pyx_t_5)) {          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_5)) break; -        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_9 && PyTuple_CheckExact(__pyx_t_5)) {          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_5)) break; -        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_1 = __pyx_t_9(__pyx_t_5);          if (unlikely(!__pyx_t_1)) { @@ -46841,16 +47560,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc        __pyx_v_alt = __pyx_t_1;        __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":965 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":965   *             curr_col = _columns[curr[0]]   *             for alt in curr_col:   *                 next_id = curr[0]+alt[2]             # <<<<<<<<<<<<<<   *                 jump = 1 - *                 if (alt[0] == EPSILON): + *                 if alt[0] == EPSILON:   */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_alt, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_alt, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __pyx_t_10 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10); @@ -46860,39 +47579,38 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc        __pyx_v_next_id = __pyx_t_10;        __pyx_t_10 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":966 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":966   *             for alt in curr_col:   *                 next_id = curr[0]+alt[2]   *                 jump = 1             # <<<<<<<<<<<<<< - *                 if (alt[0] == EPSILON): + *                 if alt[0] == EPSILON:   *                     jump = 0   */        __Pyx_INCREF(__pyx_int_1);        __Pyx_XDECREF(__pyx_v_jump);        __pyx_v_jump = __pyx_int_1; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":967 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":967   *                 next_id = curr[0]+alt[2]   *                 jump = 1 - *                 if (alt[0] == EPSILON):             # <<<<<<<<<<<<<< + *                 if alt[0] == EPSILON:             # <<<<<<<<<<<<<<   *                     jump = 0   *                 if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:   */ -      __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_alt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_alt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10);        __pyx_t_2 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_7) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":968 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":968   *                 jump = 1 - *                 if (alt[0] == EPSILON): + *                 if alt[0] == EPSILON:   *                     jump = 0             # <<<<<<<<<<<<<<   *                 if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:   *                     candidate.append([next_id,curr[1]+jump]) @@ -46904,28 +47622,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc        }        __pyx_L9:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":969 - *                 if (alt[0] == EPSILON): +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":969 + *                 if alt[0] == EPSILON:   *                     jump = 0   *                 if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:             # <<<<<<<<<<<<<<   *                     candidate.append([next_id,curr[1]+jump])   *         return sorted(result);   */ -      __pyx_t_7 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_result), __pyx_v_next_id))); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_next_id, ((PyObject *)__pyx_v_result), Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        if (__pyx_t_7) { -        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1);          __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_jump); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __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(__pyx_v_min_dist, __pyx_t_2, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_1 = PyObject_RichCompare(__pyx_v_min_dist, __pyx_t_2, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          if (__Pyx_PyObject_IsTrue(__pyx_t_1)) {            __Pyx_DECREF(__pyx_t_1);            __pyx_t_10 = PyInt_FromLong((__pyx_v_self->max_initial_size + 1)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_10, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_1); +          __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;          }          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -46937,14 +47653,14 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc        }        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":970 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":970   *                     jump = 0   *                 if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:   *                     candidate.append([next_id,curr[1]+jump])             # <<<<<<<<<<<<<<   *         return sorted(result);   *    */ -        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_curr, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1);          __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_jump); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); @@ -46957,7 +47673,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc          PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);          __Pyx_GIVEREF(__pyx_t_2);          __pyx_t_2 = 0; -        __pyx_t_8 = PyList_Append(__pyx_v_candidate, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_candidate, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;          goto __pyx_L10;        } @@ -46967,7 +47683,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_20get_next_states(struc      __pyx_L3_continue:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":971 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":971   *                 if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:   *                     candidate.append([next_id,curr[1]+jump])   *         return sorted(result);             # <<<<<<<<<<<<<< @@ -47016,11 +47732,14 @@ static char __pyx_doc_3_sa_23HieroCachingRuleFactory_22input[] = "When this func  static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_23input(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_fwords = 0;    PyObject *__pyx_v_meta = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__meta,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("input (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fwords,&__pyx_n_s__meta,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -47034,12 +47753,10 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_23input(PyObject *__pyx        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fwords)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__meta); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__meta)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("input", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -47076,7 +47793,6 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_lambda4(PyObject    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda4 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda4(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r; @@ -47089,13 +47805,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda5 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda5(__pyx_self);    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1142 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1142   *                         if len(extracts) > 0:   *                             fcount = Counter()   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))             # <<<<<<<<<<<<<< @@ -47114,7 +47829,7 @@ static PyObject *__pyx_lambda_funcdef_lambda5(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda5", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __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 = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -47154,9 +47869,9 @@ static PyObject *__pyx_lambda_funcdef_lambda4(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda4", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_7lambda4_lambda5, 0, __pyx_n_s_124, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __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[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -47192,13 +47907,12 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_5input_1lambda6(PyObjec    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda6 (wrapper)", 0); -  __pyx_self = __pyx_self;    __pyx_r = __pyx_lambda_funcdef_lambda6(__pyx_self, ((PyObject *)__pyx_v_x));    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1148 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1148   *                             for f, elist in fphrases.iteritems():   *                                 for e, alslist in elist.iteritems():   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))             # <<<<<<<<<<<<<< @@ -47216,7 +47930,7 @@ static PyObject *__pyx_lambda_funcdef_lambda6(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda6", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -47239,11 +47953,11 @@ static PyObject *__pyx_lambda_funcdef_lambda6(CYTHON_UNUSED PyObject *__pyx_self  }  static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1187 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187   *         # Online rule extraction and scoring   *         if self.online:   *             f_syms = tuple(word[0][0] for word in fwords)             # <<<<<<<<<<<<<< - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   *                 spanlen = (lex_j - lex_i) + 1   */ @@ -47255,7 +47969,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(PyObjec    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_20_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -47292,6 +48006,9 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__p    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -47315,10 +48032,18 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__p    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -47335,9 +48060,9 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__p      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_word = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_word, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_word, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __pyx_r = __pyx_t_5; @@ -47370,11 +48095,12 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_5input_4generator14(__p    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":973 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":973   *         return sorted(result);   *    *     def input(self, fwords, meta):             # <<<<<<<<<<<<<< @@ -47390,7 +48116,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_22input(struct __pyx_ob    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("input", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)__pyx_ptype_3_sa___pyx_scope_struct_19_input->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_19_input, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)__pyx_tp_new_3_sa___pyx_scope_struct_19_input(__pyx_ptype_3_sa___pyx_scope_struct_19_input, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -47441,26 +48167,31 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    PyObject *__pyx_t_11 = NULL;    PyObject *__pyx_t_12 = NULL;    int __pyx_t_13; -  PyObject *__pyx_t_14 = NULL; +  int __pyx_t_14;    PyObject *__pyx_t_15 = NULL;    PyObject *__pyx_t_16 = NULL;    PyObject *__pyx_t_17 = NULL;    PyObject *__pyx_t_18 = NULL; -  PyObject *(*__pyx_t_19)(PyObject *); -  int __pyx_t_20; +  PyObject *__pyx_t_19 = NULL; +  PyObject *(*__pyx_t_20)(PyObject *);    int __pyx_t_21;    PyObject *(*__pyx_t_22)(PyObject *);    Py_ssize_t __pyx_t_23; -  PyObject *(*__pyx_t_24)(PyObject *); +  Py_ssize_t __pyx_t_24;    Py_ssize_t __pyx_t_25; -  int __pyx_t_26; +  Py_ssize_t __pyx_t_26;    int __pyx_t_27; +  int __pyx_t_28; +  PyObject *(*__pyx_t_29)(PyObject *); +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) {      case 0: goto __pyx_L3_first_run; -    case 1: goto __pyx_L65_resume_from_yield; -    case 2: goto __pyx_L86_resume_from_yield; +    case 1: goto __pyx_L61_resume_from_yield; +    case 2: goto __pyx_L82_resume_from_yield;      default: /* CPython raises the right error here */      __Pyx_RefNannyFinishContext();      return NULL; @@ -47468,7 +48199,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":984 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":984   *         cdef Phrase hiero_phrase   *    *         flen = len(fwords)             # <<<<<<<<<<<<<< @@ -47481,14 +48212,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __pyx_cur_scope->__pyx_v_flen = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":985 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":985   *    *         flen = len(fwords)   *         start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *         self.extract_time = 0.0   *         self.intersect_time = 0.0   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 985; __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[8]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -47497,7 +48228,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    __pyx_cur_scope->__pyx_v_start_time = __pyx_t_4; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":986 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":986   *         flen = len(fwords)   *         start_time = monitor_cpu()   *         self.extract_time = 0.0             # <<<<<<<<<<<<<< @@ -47506,7 +48237,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */    __pyx_cur_scope->__pyx_v_self->extract_time = 0.0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":987 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":987   *         start_time = monitor_cpu()   *         self.extract_time = 0.0   *         self.intersect_time = 0.0             # <<<<<<<<<<<<<< @@ -47515,7 +48246,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */    __pyx_cur_scope->__pyx_v_self->intersect_time = 0.0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":988 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":988   *         self.extract_time = 0.0   *         self.intersect_time = 0.0   *         nodes_isteps_away_buffer = {}             # <<<<<<<<<<<<<< @@ -47525,10 +48256,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_3));    __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -  __pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer = __pyx_t_3; +  __pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":989 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":989   *         self.intersect_time = 0.0   *         nodes_isteps_away_buffer = {}   *         hit = 0             # <<<<<<<<<<<<<< @@ -47537,7 +48268,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */    __pyx_cur_scope->__pyx_v_hit = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":990 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":990   *         nodes_isteps_away_buffer = {}   *         hit = 0   *         reachable_buffer = {}             # <<<<<<<<<<<<<< @@ -47547,10 +48278,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_3));    __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -  __pyx_cur_scope->__pyx_v_reachable_buffer = __pyx_t_3; +  __pyx_cur_scope->__pyx_v_reachable_buffer = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":995 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":995   *         # during online extraction.  This is probably the hackiest part of   *         # online grammar extraction.   *         seen_phrases = set()             # <<<<<<<<<<<<<< @@ -47560,10 +48291,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_3));    __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -  __pyx_cur_scope->__pyx_v_seen_phrases = __pyx_t_3; +  __pyx_cur_scope->__pyx_v_seen_phrases = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":998 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":998   *    *         # Do not cache between sentences   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())             # <<<<<<<<<<<<<< @@ -47585,7 +48316,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_cur_scope->__pyx_v_self->rules->root = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1000 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1000   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())   *    *         frontier = []             # <<<<<<<<<<<<<< @@ -47595,10 +48326,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_frontier = __pyx_t_1; +  __pyx_cur_scope->__pyx_v_frontier = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1001 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1001   *    *         frontier = []   *         for i in range(len(fwords)):             # <<<<<<<<<<<<<< @@ -47612,46 +48343,45 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {      __pyx_cur_scope->__pyx_v_i = __pyx_t_5; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1002 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1002   *         frontier = []   *         for i in range(len(fwords)):   *             for alt in range(0, len(fwords[i])):             # <<<<<<<<<<<<<<   *                 if fwords[i][alt][0] != EPSILON:   *                     frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))   */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_6 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {        __pyx_cur_scope->__pyx_v_alt = __pyx_t_7; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1003 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1003   *         for i in range(len(fwords)):   *             for alt in range(0, len(fwords[i])):   *                 if fwords[i][alt][0] != EPSILON:             # <<<<<<<<<<<<<<   *                     frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))   *    */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __pyx_t_3 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1004 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1004   *             for alt in range(0, len(fwords[i])):   *                 if fwords[i][alt][0] != EPSILON:   *                     frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))             # <<<<<<<<<<<<<< @@ -47699,7 +48429,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __pyx_t_10 = 0;          __pyx_t_1 = 0;          __pyx_t_11 = 0; -        __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_12)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_12)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;          goto __pyx_L8;        } @@ -47707,7 +48437,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene      }    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1006 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1006   *                     frontier.append((i, i, (i,), alt, 0, self.rules.root, (), False))   *    *         xroot = None             # <<<<<<<<<<<<<< @@ -47718,7 +48448,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __Pyx_GIVEREF(Py_None);    __pyx_cur_scope->__pyx_v_xroot = Py_None; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1007 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1007   *    *         xroot = None   *         x1 = sym_setindex(self.category, 1)             # <<<<<<<<<<<<<< @@ -47727,7 +48457,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */    __pyx_cur_scope->__pyx_v_x1 = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1008 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1008   *         xroot = None   *         x1 = sym_setindex(self.category, 1)   *         if x1 in self.rules.root.children:             # <<<<<<<<<<<<<< @@ -47736,23 +48466,24 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */    __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_x1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_12); -  __pyx_t_11 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_11); -  __pyx_t_9 = ((PySequence_Contains(__pyx_t_11, __pyx_t_12))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_t_12, __pyx_t_11, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -  if (__pyx_t_9) { +  __pyx_t_14 = (__pyx_t_9 != 0); +  if (__pyx_t_14) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1009 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1009   *         x1 = sym_setindex(self.category, 1)   *         if x1 in self.rules.root.children:   *             xroot = self.rules.root.children[x1]             # <<<<<<<<<<<<<<   *         else:   *             xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())   */ -    __pyx_t_11 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11); -    __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, sizeof(int), PyInt_FromLong); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12);      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_xroot); @@ -47764,7 +48495,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1011 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1011   *             xroot = self.rules.root.children[x1]   *         else:   *             xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())             # <<<<<<<<<<<<<< @@ -47787,21 +48518,21 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene      __pyx_cur_scope->__pyx_v_xroot = __pyx_t_11;      __pyx_t_11 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1012 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1012   *         else:   *             xroot = ExtendedTrieNode(suffix_link=self.rules.root, phrase_location=PhraseLocation())   *             self.rules.root.children[x1] = xroot             # <<<<<<<<<<<<<<   *    *         for i in range(self.min_gap_size, len(fwords)):   */ -    __pyx_t_11 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->rules->root, __pyx_n_s__children); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11); -    if (__Pyx_SetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, __pyx_cur_scope->__pyx_v_xroot, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_x1, __pyx_cur_scope->__pyx_v_xroot, sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;    }    __pyx_L9:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1014 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1014   *             self.rules.root.children[x1] = xroot   *    *         for i in range(self.min_gap_size, len(fwords)):             # <<<<<<<<<<<<<< @@ -47815,46 +48546,45 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    for (__pyx_t_5 = __pyx_cur_scope->__pyx_v_self->min_gap_size; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {      __pyx_cur_scope->__pyx_v_i = __pyx_t_5; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1015 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1015   *    *         for i in range(self.min_gap_size, len(fwords)):   *             for alt in range(0, len(fwords[i])):             # <<<<<<<<<<<<<<   *                 if fwords[i][alt][0] != EPSILON:   *                     frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))   */ -    __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __pyx_t_6 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;      for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {        __pyx_cur_scope->__pyx_v_alt = __pyx_t_7; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1016 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1016   *         for i in range(self.min_gap_size, len(fwords)):   *             for alt in range(0, len(fwords[i])):   *                 if fwords[i][alt][0] != EPSILON:             # <<<<<<<<<<<<<<   *                     frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))   *    */ -      __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11); -      __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;        __pyx_t_12 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12); -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_11, __pyx_t_12, Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_11, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      if (__pyx_t_9) { +      if (__pyx_t_14) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1017 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1017   *             for alt in range(0, len(fwords[i])):   *                 if fwords[i][alt][0] != EPSILON:   *                     frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))             # <<<<<<<<<<<<<< @@ -47878,87 +48608,87 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __Pyx_GOTREF(__pyx_t_3);          __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_x1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_14); -        PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_8); +        __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_15); +        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_8);          __Pyx_GIVEREF(__pyx_t_8);          __pyx_t_8 = 0;          __pyx_t_8 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_15 = PyTuple_New(8); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_15); -        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); +        __pyx_t_16 = PyTuple_New(8); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_16); +        PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1);          __Pyx_GIVEREF(__pyx_t_1); -        PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_12); +        PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_12);          __Pyx_GIVEREF(__pyx_t_12); -        PyTuple_SET_ITEM(__pyx_t_15, 2, ((PyObject *)__pyx_t_10)); +        PyTuple_SET_ITEM(__pyx_t_16, 2, ((PyObject *)__pyx_t_10));          __Pyx_GIVEREF(((PyObject *)__pyx_t_10)); -        PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_11); +        PyTuple_SET_ITEM(__pyx_t_16, 3, __pyx_t_11);          __Pyx_GIVEREF(__pyx_t_11); -        PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_t_3); +        PyTuple_SET_ITEM(__pyx_t_16, 4, __pyx_t_3);          __Pyx_GIVEREF(__pyx_t_3);          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xroot); -        PyTuple_SET_ITEM(__pyx_t_15, 5, __pyx_cur_scope->__pyx_v_xroot); +        PyTuple_SET_ITEM(__pyx_t_16, 5, __pyx_cur_scope->__pyx_v_xroot);          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xroot); -        PyTuple_SET_ITEM(__pyx_t_15, 6, ((PyObject *)__pyx_t_14)); -        __Pyx_GIVEREF(((PyObject *)__pyx_t_14)); -        PyTuple_SET_ITEM(__pyx_t_15, 7, __pyx_t_8); +        PyTuple_SET_ITEM(__pyx_t_16, 6, ((PyObject *)__pyx_t_15)); +        __Pyx_GIVEREF(((PyObject *)__pyx_t_15)); +        PyTuple_SET_ITEM(__pyx_t_16, 7, __pyx_t_8);          __Pyx_GIVEREF(__pyx_t_8);          __pyx_t_1 = 0;          __pyx_t_12 = 0;          __pyx_t_10 = 0;          __pyx_t_11 = 0;          __pyx_t_3 = 0; -        __pyx_t_14 = 0; +        __pyx_t_15 = 0;          __pyx_t_8 = 0; -        __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_15)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +        __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_16)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;          goto __pyx_L14;        }        __pyx_L14:;      }    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1019 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1019   *                     frontier.append((i-self.min_gap_size, i, (i,), alt, self.min_gap_size, xroot, (x1,), True))   *    *         next_states = []             # <<<<<<<<<<<<<<   *         for i in range(len(fwords)):   *             next_states.append(self.get_next_states(fwords,i,self.min_gap_size))   */ -  __pyx_t_15 = PyList_New(0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_15); -  __Pyx_GIVEREF(((PyObject *)__pyx_t_15)); -  __pyx_cur_scope->__pyx_v_next_states = __pyx_t_15; -  __pyx_t_15 = 0; +  __pyx_t_16 = PyList_New(0); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_16); +  __Pyx_GIVEREF(((PyObject *)__pyx_t_16)); +  __pyx_cur_scope->__pyx_v_next_states = ((PyObject*)__pyx_t_16); +  __pyx_t_16 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1020 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1020   *    *         next_states = []   *         for i in range(len(fwords)):             # <<<<<<<<<<<<<<   *             next_states.append(self.get_next_states(fwords,i,self.min_gap_size))   *    */ -  __pyx_t_15 = __pyx_cur_scope->__pyx_v_fwords; -  __Pyx_INCREF(__pyx_t_15); -  __pyx_t_2 = PyObject_Length(__pyx_t_15); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +  __pyx_t_16 = __pyx_cur_scope->__pyx_v_fwords; +  __Pyx_INCREF(__pyx_t_16); +  __pyx_t_2 = PyObject_Length(__pyx_t_16); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_2; __pyx_t_5+=1) {      __pyx_cur_scope->__pyx_v_i = __pyx_t_5; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1021 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1021   *         next_states = []   *         for i in range(len(fwords)):   *             next_states.append(self.get_next_states(fwords,i,self.min_gap_size))             # <<<<<<<<<<<<<<   *    *         while len(frontier) > 0:   */ -    __pyx_t_15 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_next_states); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); +    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_next_states); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_16);      __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_14 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); +    __pyx_t_15 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_15);      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords); @@ -47966,19 +48696,19 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8); -    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_14); -    __Pyx_GIVEREF(__pyx_t_14); +    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_15); +    __Pyx_GIVEREF(__pyx_t_15);      __pyx_t_8 = 0; -    __pyx_t_14 = 0; -    __pyx_t_14 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +    __pyx_t_15 = 0; +    __pyx_t_15 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_15); +    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -    __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_next_states, __pyx_t_14); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +    __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_next_states, __pyx_t_15); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1023 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1023   *             next_states.append(self.get_next_states(fwords,i,self.min_gap_size))   *    *         while len(frontier) > 0:             # <<<<<<<<<<<<<< @@ -47986,113 +48716,119 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   *             for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:   */    while (1) { -    __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_frontier));  -    __pyx_t_9 = (__pyx_t_2 > 0); -    if (!__pyx_t_9) break; +    __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_frontier)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = ((__pyx_t_2 > 0) != 0); +    if (!__pyx_t_14) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1024 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1024   *    *         while len(frontier) > 0:   *             new_frontier = []             # <<<<<<<<<<<<<<   *             for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:   *                 word_id = fwords[i][alt][0]   */ -    __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); +    __pyx_t_15 = PyList_New(0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_15);      __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier));      __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_new_frontier)); -    __Pyx_GIVEREF(((PyObject *)__pyx_t_14)); -    __pyx_cur_scope->__pyx_v_new_frontier = __pyx_t_14; -    __pyx_t_14 = 0; +    __Pyx_GIVEREF(((PyObject *)__pyx_t_15)); +    __pyx_cur_scope->__pyx_v_new_frontier = ((PyObject*)__pyx_t_15); +    __pyx_t_15 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1025 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1025   *         while len(frontier) > 0:   *             new_frontier = []   *             for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:             # <<<<<<<<<<<<<<   *                 word_id = fwords[i][alt][0]   *                 spanlen = fwords[i][alt][2]   */ -    __pyx_t_14 = ((PyObject *)__pyx_cur_scope->__pyx_v_frontier); __Pyx_INCREF(__pyx_t_14); __pyx_t_2 = 0; +    __pyx_t_15 = ((PyObject *)__pyx_cur_scope->__pyx_v_frontier); __Pyx_INCREF(__pyx_t_15); __pyx_t_2 = 0;      for (;;) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; +      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_15)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_3 = PySequence_ITEM(__pyx_t_15, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif        if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {          PyObject* sequence = __pyx_t_3; +        #if CYTHON_COMPILING_IN_CPYTHON +        Py_ssize_t size = Py_SIZE(sequence); +        #else +        Py_ssize_t size = PySequence_Size(sequence); +        #endif +        if (unlikely(size != 8)) { +          if (size > 8) __Pyx_RaiseTooManyValuesError(8); +          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        #if CYTHON_COMPILING_IN_CPYTHON          if (likely(PyTuple_CheckExact(sequence))) { -          if (unlikely(PyTuple_GET_SIZE(sequence) != 8)) { -            if (PyTuple_GET_SIZE(sequence) > 8) __Pyx_RaiseTooManyValuesError(8); -            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -            {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          } -          __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0);  +          __pyx_t_16 = PyTuple_GET_ITEM(sequence, 0);             __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);             __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);             __pyx_t_10 = PyTuple_GET_ITEM(sequence, 3);             __pyx_t_12 = PyTuple_GET_ITEM(sequence, 4);             __pyx_t_1 = PyTuple_GET_ITEM(sequence, 5);  -          __pyx_t_16 = PyTuple_GET_ITEM(sequence, 6);  -          __pyx_t_17 = PyTuple_GET_ITEM(sequence, 7);  +          __pyx_t_17 = PyTuple_GET_ITEM(sequence, 6);  +          __pyx_t_18 = PyTuple_GET_ITEM(sequence, 7);           } else { -          if (unlikely(PyList_GET_SIZE(sequence) != 8)) { -            if (PyList_GET_SIZE(sequence) > 8) __Pyx_RaiseTooManyValuesError(8); -            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -            {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          } -          __pyx_t_15 = PyList_GET_ITEM(sequence, 0);  +          __pyx_t_16 = PyList_GET_ITEM(sequence, 0);             __pyx_t_8 = PyList_GET_ITEM(sequence, 1);             __pyx_t_11 = PyList_GET_ITEM(sequence, 2);             __pyx_t_10 = PyList_GET_ITEM(sequence, 3);             __pyx_t_12 = PyList_GET_ITEM(sequence, 4);             __pyx_t_1 = PyList_GET_ITEM(sequence, 5);  -          __pyx_t_16 = PyList_GET_ITEM(sequence, 6);  -          __pyx_t_17 = PyList_GET_ITEM(sequence, 7);  +          __pyx_t_17 = PyList_GET_ITEM(sequence, 6);  +          __pyx_t_18 = PyList_GET_ITEM(sequence, 7);           } -        __Pyx_INCREF(__pyx_t_15); +        __Pyx_INCREF(__pyx_t_16);          __Pyx_INCREF(__pyx_t_8);          __Pyx_INCREF(__pyx_t_11);          __Pyx_INCREF(__pyx_t_10);          __Pyx_INCREF(__pyx_t_12);          __Pyx_INCREF(__pyx_t_1); -        __Pyx_INCREF(__pyx_t_16);          __Pyx_INCREF(__pyx_t_17); +        __Pyx_INCREF(__pyx_t_18); +        #else +        Py_ssize_t i; +        PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_8,&__pyx_t_11,&__pyx_t_10,&__pyx_t_12,&__pyx_t_1,&__pyx_t_17,&__pyx_t_18}; +        for (i=0; i < 8; i++) { +          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(item); +          *(temps[i]) = item; +        } +        #endif          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      } else { +      } else +      {          Py_ssize_t index = -1; -        __pyx_t_18 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_18); +        PyObject** temps[8] = {&__pyx_t_16,&__pyx_t_8,&__pyx_t_11,&__pyx_t_10,&__pyx_t_12,&__pyx_t_1,&__pyx_t_17,&__pyx_t_18}; +        __pyx_t_19 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_19);          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_19 = Py_TYPE(__pyx_t_18)->tp_iternext; -        index = 0; __pyx_t_15 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_15)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_15); -        index = 1; __pyx_t_8 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_8)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_8); -        index = 2; __pyx_t_11 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_11)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_11); -        index = 3; __pyx_t_10 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_10)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_10); -        index = 4; __pyx_t_12 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_12)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_12); -        index = 5; __pyx_t_1 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_1)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_1); -        index = 6; __pyx_t_16 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_16)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_16); -        index = 7; __pyx_t_17 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_17)) goto __pyx_L21_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_17); -        if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_20 = Py_TYPE(__pyx_t_19)->tp_iternext; +        for (index=0; index < 8; index++) { +          PyObject* item = __pyx_t_20(__pyx_t_19); if (unlikely(!item)) goto __pyx_L21_unpacking_failed; +          __Pyx_GOTREF(item); +          *(temps[index]) = item; +        } +        if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_19), 8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_20 = NULL; +        __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;          goto __pyx_L22_unpacking_done;          __pyx_L21_unpacking_failed:; -        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; -        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +        __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; +        __pyx_t_20 = NULL; +        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __pyx_L22_unpacking_done:;        } -      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_15); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +      __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_16); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;        __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        __pyx_cur_scope->__pyx_v_k = __pyx_t_5;        __pyx_cur_scope->__pyx_v_i = __pyx_t_7; @@ -48101,7 +48837,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        __Pyx_GIVEREF(__pyx_t_11);        __pyx_cur_scope->__pyx_v_input_match = __pyx_t_11;        __pyx_t_11 = 0; -      __pyx_cur_scope->__pyx_v_alt = __pyx_t_20; +      __pyx_cur_scope->__pyx_v_alt = __pyx_t_21;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_pathlen);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_pathlen);        __Pyx_GIVEREF(__pyx_t_12); @@ -48114,58 +48850,58 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        __pyx_t_1 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_prefix);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_prefix); -      __Pyx_GIVEREF(__pyx_t_16); -      __pyx_cur_scope->__pyx_v_prefix = __pyx_t_16; -      __pyx_t_16 = 0; -      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_is_shadow_path); -      __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_is_shadow_path);        __Pyx_GIVEREF(__pyx_t_17); -      __pyx_cur_scope->__pyx_v_is_shadow_path = __pyx_t_17; +      __pyx_cur_scope->__pyx_v_prefix = __pyx_t_17;        __pyx_t_17 = 0; +      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_is_shadow_path); +      __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_is_shadow_path); +      __Pyx_GIVEREF(__pyx_t_18); +      __pyx_cur_scope->__pyx_v_is_shadow_path = __pyx_t_18; +      __pyx_t_18 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1026 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1026   *             new_frontier = []   *             for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:   *                 word_id = fwords[i][alt][0]             # <<<<<<<<<<<<<<   *                 spanlen = fwords[i][alt][2]   *                 # TODO get rid of k -- pathlen is replacing it   */ -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_17, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_18, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_word_id);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_word_id);        __Pyx_GIVEREF(__pyx_t_3);        __pyx_cur_scope->__pyx_v_word_id = __pyx_t_3;        __pyx_t_3 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1027 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1027   *             for k, i, input_match, alt, pathlen, node, prefix, is_shadow_path in frontier:   *                 word_id = fwords[i][alt][0]   *                 spanlen = fwords[i][alt][2]             # <<<<<<<<<<<<<<   *                 # TODO get rid of k -- pathlen is replacing it   *                 if word_id == EPSILON:   */ -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fwords, __pyx_cur_scope->__pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_17 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = __Pyx_GetItemInt(__pyx_t_3, __pyx_cur_scope->__pyx_v_alt, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_17, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_18, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_spanlen);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_spanlen);        __Pyx_GIVEREF(__pyx_t_3);        __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_3;        __pyx_t_3 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1029 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1029   *                 spanlen = fwords[i][alt][2]   *                 # TODO get rid of k -- pathlen is replacing it   *                 if word_id == EPSILON:             # <<<<<<<<<<<<<< @@ -48174,40 +48910,38 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */        __pyx_t_3 = PyInt_FromLong(__pyx_v_3_sa_EPSILON); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __pyx_t_17 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_18); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -      if (__pyx_t_9) { +      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      if (__pyx_t_14) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1031 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1031   *                 if word_id == EPSILON:   *                     # skipping because word_id is epsilon   *                     if i+spanlen >= len(fwords):             # <<<<<<<<<<<<<<   *                         continue   *                     for nualt in range(0,len(fwords[i+spanlen])):   */ -        __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); -        __pyx_t_3 = PyNumber_Add(__pyx_t_17, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        __pyx_t_3 = PyNumber_Add(__pyx_t_18, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3); -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        __pyx_t_17 = __pyx_cur_scope->__pyx_v_fwords; -        __Pyx_INCREF(__pyx_t_17); -        __pyx_t_6 = PyObject_Length(__pyx_t_17); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        __pyx_t_17 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); -        __pyx_t_16 = PyObject_RichCompare(__pyx_t_3, __pyx_t_17, Py_GE); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_16); +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_18 = __pyx_cur_scope->__pyx_v_fwords; +        __Pyx_INCREF(__pyx_t_18); +        __pyx_t_6 = PyObject_Length(__pyx_t_18); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_18 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        __pyx_t_17 = PyObject_RichCompare(__pyx_t_3, __pyx_t_18, Py_GE); __Pyx_XGOTREF(__pyx_t_17); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_16); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -        if (__pyx_t_9) { +        if (__pyx_t_14) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1032 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1032   *                     # skipping because word_id is epsilon   *                     if i+spanlen >= len(fwords):   *                         continue             # <<<<<<<<<<<<<< @@ -48219,53 +48953,53 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          }          __pyx_L24:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1033 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1033   *                     if i+spanlen >= len(fwords):   *                         continue   *                     for nualt in range(0,len(fwords[i+spanlen])):             # <<<<<<<<<<<<<<   *                         frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))   *                     continue   */ -        __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_16); -        __pyx_t_17 = PyNumber_Add(__pyx_t_16, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_17); -        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -        __pyx_t_16 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_17); if (!__pyx_t_16) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_16); +        __pyx_t_18 = PyNumber_Add(__pyx_t_17, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +        __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_18); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_17); +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_6 = PyObject_Length(__pyx_t_17); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        __pyx_t_6 = PyObject_Length(__pyx_t_16); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -        for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_6; __pyx_t_20+=1) { -          __pyx_cur_scope->__pyx_v_nualt = __pyx_t_20; +        for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_6; __pyx_t_21+=1) { +          __pyx_cur_scope->__pyx_v_nualt = __pyx_t_21; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1034 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1034   *                         continue   *                     for nualt in range(0,len(fwords[i+spanlen])):   *                         frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))             # <<<<<<<<<<<<<<   *                     continue   *    */ -          __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_16); -          __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_17); -          __pyx_t_3 = PyNumber_Add(__pyx_t_17, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_3 = PyNumber_Add(__pyx_t_18, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -          __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_nualt); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +          __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_nualt); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __pyx_t_1 = PyTuple_New(8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_1); -          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_16); -          __Pyx_GIVEREF(__pyx_t_16); +          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_17); +          __Pyx_GIVEREF(__pyx_t_17);            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);            __Pyx_GIVEREF(__pyx_t_3);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_input_match);            PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_cur_scope->__pyx_v_input_match);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_input_match); -          PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_17); -          __Pyx_GIVEREF(__pyx_t_17); +          PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_18); +          __Pyx_GIVEREF(__pyx_t_18);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);            PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_cur_scope->__pyx_v_pathlen);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen); @@ -48278,14 +49012,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path);            PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path); -          __pyx_t_16 = 0; -          __pyx_t_3 = 0;            __pyx_t_17 = 0; -          __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = 0; +          __pyx_t_18 = 0; +          __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_frontier, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;          } -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1035 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1035   *                     for nualt in range(0,len(fwords[i+spanlen])):   *                         frontier.append((k, i+spanlen, input_match, nualt, pathlen, node, prefix, is_shadow_path))   *                     continue             # <<<<<<<<<<<<<< @@ -48297,7 +49031,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        }        __pyx_L23:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1037 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1037   *                     continue   *    *                 phrase = prefix + (word_id,)             # <<<<<<<<<<<<<< @@ -48309,53 +49043,53 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_word_id);        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_word_id);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_word_id); -      __pyx_t_17 = PyNumber_Add(__pyx_cur_scope->__pyx_v_prefix, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = PyNumber_Add(__pyx_cur_scope->__pyx_v_prefix, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18);        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_phrase);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_phrase); -      __Pyx_GIVEREF(__pyx_t_17); -      __pyx_cur_scope->__pyx_v_phrase = __pyx_t_17; -      __pyx_t_17 = 0; +      __Pyx_GIVEREF(__pyx_t_18); +      __pyx_cur_scope->__pyx_v_phrase = __pyx_t_18; +      __pyx_t_18 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1038 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1038   *    *                 phrase = prefix + (word_id,)   *                 hiero_phrase = Phrase(phrase)             # <<<<<<<<<<<<<<   *                 arity = hiero_phrase.arity()   *    */ -      __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_phrase); -      PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_cur_scope->__pyx_v_phrase); +      PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_cur_scope->__pyx_v_phrase);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_phrase); -      __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase));        __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase));        __Pyx_GIVEREF(__pyx_t_1);        __pyx_cur_scope->__pyx_v_hiero_phrase = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);        __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1039 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1039   *                 phrase = prefix + (word_id,)   *                 hiero_phrase = Phrase(phrase)   *                 arity = hiero_phrase.arity()             # <<<<<<<<<<<<<<   *    *                 lookup_required = False   */ -      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_hiero_phrase), __pyx_n_s__arity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_17 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); +      __pyx_t_18 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_t_17); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -      __pyx_cur_scope->__pyx_v_arity = __pyx_t_20; +      __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      __pyx_cur_scope->__pyx_v_arity = __pyx_t_21; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1041 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1041   *                 arity = hiero_phrase.arity()   *    *                 lookup_required = False             # <<<<<<<<<<<<<< @@ -48364,36 +49098,38 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */        __pyx_cur_scope->__pyx_v_lookup_required = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1042 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1042   *    *                 lookup_required = False   *                 if word_id in node.children:             # <<<<<<<<<<<<<<   *                     if node.children[word_id] is None:   *                         # Path dead-ends at this node   */ -      __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_17); -      __pyx_t_9 = ((PySequence_Contains(__pyx_t_17, __pyx_cur_scope->__pyx_v_word_id))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +      __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18); +      __pyx_t_14 = (__Pyx_PySequence_Contains(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_18, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      __pyx_t_9 = (__pyx_t_14 != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1043 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1043   *                 lookup_required = False   *                 if word_id in node.children:   *                     if node.children[word_id] is None:             # <<<<<<<<<<<<<<   *                         # Path dead-ends at this node   *                         continue   */ -        __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); -        __pyx_t_1 = PyObject_GetItem(__pyx_t_17, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        __pyx_t_1 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;          __pyx_t_9 = (__pyx_t_1 == Py_None);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        if (__pyx_t_9) { +        __pyx_t_14 = (__pyx_t_9 != 0); +        if (__pyx_t_14) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1045 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1045   *                     if node.children[word_id] is None:   *                         # Path dead-ends at this node   *                         continue             # <<<<<<<<<<<<<< @@ -48405,43 +49141,44 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1048 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1048   *                     else:   *                         # Path continues at this node   *                         node = node.children[word_id]             # <<<<<<<<<<<<<<   *                 else:   *                     if node.suffix_link is None:   */ -          __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_1); -          __pyx_t_17 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = PyObject_GetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_node);            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_node); -          __Pyx_GIVEREF(__pyx_t_17); -          __pyx_cur_scope->__pyx_v_node = __pyx_t_17; -          __pyx_t_17 = 0; +          __Pyx_GIVEREF(__pyx_t_18); +          __pyx_cur_scope->__pyx_v_node = __pyx_t_18; +          __pyx_t_18 = 0;          }          __pyx_L28:;          goto __pyx_L27;        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1050 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1050   *                         node = node.children[word_id]   *                 else:   *                     if node.suffix_link is None:             # <<<<<<<<<<<<<<   *                         # Current node is root; lookup required   *                         lookup_required = True   */ -        __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); -        __pyx_t_9 = (__pyx_t_17 == Py_None); -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        __pyx_t_14 = (__pyx_t_18 == Py_None); +        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +        __pyx_t_9 = (__pyx_t_14 != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1052 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1052   *                     if node.suffix_link is None:   *                         # Current node is root; lookup required   *                         lookup_required = True             # <<<<<<<<<<<<<< @@ -48453,54 +49190,56 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1054 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1054   *                         lookup_required = True   *                     else:   *                         if word_id in node.suffix_link.children:             # <<<<<<<<<<<<<<   *                             if node.suffix_link.children[word_id] is None:   *                                 # Suffix link reports path is dead end   */ -          __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          __pyx_t_1 = PyObject_GetAttr(__pyx_t_17, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_1); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -          __pyx_t_9 = ((PySequence_Contains(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +          __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_cur_scope->__pyx_v_word_id, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -          if (__pyx_t_9) { +          __pyx_t_14 = (__pyx_t_9 != 0); +          if (__pyx_t_14) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1055 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1055   *                     else:   *                         if word_id in node.suffix_link.children:   *                             if node.suffix_link.children[word_id] is None:             # <<<<<<<<<<<<<<   *                                 # Suffix link reports path is dead end   *                                 node.children[word_id] = None   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_17 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -            __pyx_t_1 = PyObject_GetItem(__pyx_t_17, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -            __pyx_t_9 = (__pyx_t_1 == Py_None); +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +            __pyx_t_14 = (__pyx_t_1 == Py_None);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +            __pyx_t_9 = (__pyx_t_14 != 0);              if (__pyx_t_9) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1057 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1057   *                             if node.suffix_link.children[word_id] is None:   *                                 # Suffix link reports path is dead end   *                                 node.children[word_id] = None             # <<<<<<<<<<<<<<   *                                 continue   *                             else:   */ -              __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                if (PyObject_SetItem(__pyx_t_1, __pyx_cur_scope->__pyx_v_word_id, Py_None) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1058 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1058   *                                 # Suffix link reports path is dead end   *                                 node.children[word_id] = None   *                                 continue             # <<<<<<<<<<<<<< @@ -48512,7 +49251,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              }              /*else*/ { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1061 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1061   *                             else:   *                                 # Suffix link indicates lookup is reqired   *                                 lookup_required = True             # <<<<<<<<<<<<<< @@ -48526,14 +49265,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            }            /*else*/ { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1064 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1064   *                         else:   *                             #ERROR: We never get here   *                             raise Exception("Keyword trie error")             # <<<<<<<<<<<<<<   *                 # checking whether lookup_required   *                 if lookup_required:   */ -            __pyx_t_1 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_122), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = PyObject_Call(__pyx_builtin_Exception, ((PyObject *)__pyx_k_tuple_126), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1);              __Pyx_Raise(__pyx_t_1, 0, 0, 0);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -48545,16 +49284,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        }        __pyx_L27:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1066 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1066   *                             raise Exception("Keyword trie error")   *                 # checking whether lookup_required   *                 if lookup_required:             # <<<<<<<<<<<<<<   *                     new_node = None   *                     if is_shadow_path:   */ -      if (__pyx_cur_scope->__pyx_v_lookup_required) { +      __pyx_t_9 = (__pyx_cur_scope->__pyx_v_lookup_required != 0); +      if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1067 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1067   *                 # checking whether lookup_required   *                 if lookup_required:   *                     new_node = None             # <<<<<<<<<<<<<< @@ -48567,7 +49307,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __Pyx_GIVEREF(Py_None);          __pyx_cur_scope->__pyx_v_new_node = Py_None; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1068 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1068   *                 if lookup_required:   *                     new_node = None   *                     if is_shadow_path:             # <<<<<<<<<<<<<< @@ -48577,7 +49317,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1071 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1071   *                         # Extending shadow path   *                         # on the shadow path we don't do any search, we just use info from suffix link   *                         new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,             # <<<<<<<<<<<<<< @@ -48586,39 +49326,39 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -          __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          __pyx_t_3 = PyObject_GetAttr(__pyx_t_17, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -          __pyx_t_17 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +          __pyx_t_18 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          __pyx_t_3 = PyObject_GetAttr(__pyx_t_17, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1072 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1072   *                         # on the shadow path we don't do any search, we just use info from suffix link   *                         new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,   *                                 suffix_link=node.suffix_link.children[word_id],             # <<<<<<<<<<<<<<   *                                 phrase=hiero_phrase)   *                     else:   */ -          __pyx_t_3 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __pyx_t_17 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__children); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          __pyx_t_3 = PyObject_GetItem(__pyx_t_17, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__suffix_link), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1073 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1073   *                         new_node = ExtendedTrieNode(phrase_location=node.suffix_link.children[word_id].phrase_location,   *                                 suffix_link=node.suffix_link.children[word_id],   *                                 phrase=hiero_phrase)             # <<<<<<<<<<<<<< @@ -48638,24 +49378,24 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1075 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1075   *                                 phrase=hiero_phrase)   *                     else:   *                         if arity > 0:             # <<<<<<<<<<<<<<   *                             # Intersecting because of arity > 0   *                             intersect_start_time = monitor_cpu()   */ -          __pyx_t_9 = (__pyx_cur_scope->__pyx_v_arity > 0); +          __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_arity > 0) != 0);            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1077 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1077   *                         if arity > 0:   *                             # Intersecting because of arity > 0   *                             intersect_start_time = monitor_cpu()             # <<<<<<<<<<<<<<   *                             phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)   *                             intersect_stop_time = monitor_cpu()   */ -            __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1077; __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[8]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); @@ -48666,16 +49406,16 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_intersect_start_time = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1078 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1078   *                             # Intersecting because of arity > 0   *                             intersect_start_time = monitor_cpu()   *                             phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)             # <<<<<<<<<<<<<<   *                             intersect_stop_time = monitor_cpu()   *                             self.intersect_time += intersect_stop_time - intersect_start_time   */ -            __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__children); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;              __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -48690,14 +49430,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_3);              __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1079 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1079   *                             intersect_start_time = monitor_cpu()   *                             phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)   *                             intersect_stop_time = monitor_cpu()             # <<<<<<<<<<<<<<   *                             self.intersect_time += intersect_stop_time - intersect_start_time   *                         else:   */ -            __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1079; __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[8]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); @@ -48708,7 +49448,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_intersect_stop_time = __pyx_t_1;              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1080 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1080   *                             phrase_location = self.intersect(node, node.suffix_link.children[word_id], hiero_phrase)   *                             intersect_stop_time = monitor_cpu()   *                             self.intersect_time += intersect_stop_time - intersect_start_time             # <<<<<<<<<<<<<< @@ -48719,53 +49459,53 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __Pyx_GOTREF(__pyx_t_1);              __pyx_t_3 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_intersect_stop_time, __pyx_cur_scope->__pyx_v_intersect_start_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3); -            __pyx_t_17 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -            __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_17); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +            __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_18); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              __pyx_cur_scope->__pyx_v_self->intersect_time = __pyx_t_4;              goto __pyx_L34;            }            /*else*/ { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1083 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1083   *                         else:   *                             # Suffix array search   *                             phrase_location = node.phrase_location             # <<<<<<<<<<<<<<   *                             sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)   *                             if sa_range is not None:   */ -            __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); -            if (!(likely(((__pyx_t_17) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_17, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            if (!(likely(((__pyx_t_18) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_18, __pyx_ptype_3_sa_PhraseLocation))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location));              __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location)); -            __Pyx_GIVEREF(__pyx_t_17); -            __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_17); -            __pyx_t_17 = 0; +            __Pyx_GIVEREF(__pyx_t_18); +            __pyx_cur_scope->__pyx_v_phrase_location = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_18); +            __pyx_t_18 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1084 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1084   *                             # Suffix array search   *                             phrase_location = node.phrase_location   *                             sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)             # <<<<<<<<<<<<<<   *                             if sa_range is not None:   *                                 phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])   */ -            __pyx_t_17 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self->fsa), __pyx_n_s__lookup); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); -            __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_phrase, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->fsa), __pyx_n_s__lookup); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            __pyx_t_3 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_phrase, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3); -            __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -            __pyx_t_3 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_20)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_21)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_3));              __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_6 - 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_phrase_location->sa_low); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_16); +            __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_phrase_location->sa_low); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_17);              __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_phrase_location->sa_high); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12);              __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -48774,17 +49514,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __Pyx_GIVEREF(((PyObject *)__pyx_t_3));              PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1);              __Pyx_GIVEREF(__pyx_t_1); -            PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_16); -            __Pyx_GIVEREF(__pyx_t_16); +            PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_17); +            __Pyx_GIVEREF(__pyx_t_17);              PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_12);              __Pyx_GIVEREF(__pyx_t_12);              __pyx_t_3 = 0;              __pyx_t_1 = 0; -            __pyx_t_16 = 0; +            __pyx_t_17 = 0;              __pyx_t_12 = 0; -            __pyx_t_12 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_12 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12); -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sa_range);              __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_sa_range); @@ -48792,7 +49532,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_sa_range = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1085 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1085   *                             phrase_location = node.phrase_location   *                             sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)   *                             if sa_range is not None:             # <<<<<<<<<<<<<< @@ -48800,9 +49540,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   *                             else:   */              __pyx_t_9 = (__pyx_cur_scope->__pyx_v_sa_range != Py_None); -            if (__pyx_t_9) { +            __pyx_t_14 = (__pyx_t_9 != 0); +            if (__pyx_t_14) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1086 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1086   *                             sa_range = self.fsa.lookup(sym_tostring(phrase[-1]), len(phrase)-1, phrase_location.sa_low, phrase_location.sa_high)   *                             if sa_range is not None:   *                                 phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])             # <<<<<<<<<<<<<< @@ -48811,11 +49552,11 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */                __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(((PyObject *)__pyx_t_12)); -              __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_10);                if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__sa_low), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -              __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_10 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_sa_range, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_10);                if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__sa_high), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -48831,7 +49572,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              }              /*else*/ { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1088 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1088   *                                 phrase_location = PhraseLocation(sa_low=sa_range[0], sa_high=sa_range[1])   *                             else:   *                                 phrase_location = None             # <<<<<<<<<<<<<< @@ -48848,29 +49589,30 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            }            __pyx_L34:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1090 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1090   *                                 phrase_location = None   *    *                         if phrase_location is None:             # <<<<<<<<<<<<<<   *                             node.children[word_id] = None   *                             # Search failed   */ -          __pyx_t_9 = (((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location) == Py_None); +          __pyx_t_14 = (((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location) == Py_None); +          __pyx_t_9 = (__pyx_t_14 != 0);            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1091 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1091   *    *                         if phrase_location is None:   *                             node.children[word_id] = None             # <<<<<<<<<<<<<<   *                             # Search failed   *                             continue   */ -            __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10);              if (PyObject_SetItem(__pyx_t_10, __pyx_cur_scope->__pyx_v_word_id, Py_None) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1093 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1093   *                             node.children[word_id] = None   *                             # Search failed   *                             continue             # <<<<<<<<<<<<<< @@ -48882,42 +49624,45 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            }            __pyx_L36:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1095 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1095   *                             continue   *                         # Search succeeded   *                         suffix_link = self.rules.root             # <<<<<<<<<<<<<<   *                         if node.suffix_link is not None:   *                             suffix_link = node.suffix_link.children[word_id]   */ -          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->rules->root); +          __pyx_t_10 = __pyx_cur_scope->__pyx_v_self->rules->root; +          __Pyx_INCREF(__pyx_t_10);            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_suffix_link);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_suffix_link); -          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->rules->root); -          __pyx_cur_scope->__pyx_v_suffix_link = __pyx_cur_scope->__pyx_v_self->rules->root; +          __Pyx_GIVEREF(__pyx_t_10); +          __pyx_cur_scope->__pyx_v_suffix_link = __pyx_t_10; +          __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1096 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1096   *                         # Search succeeded   *                         suffix_link = self.rules.root   *                         if node.suffix_link is not None:             # <<<<<<<<<<<<<<   *                             suffix_link = node.suffix_link.children[word_id]   *                         new_node = ExtendedTrieNode(phrase_location=phrase_location,   */ -          __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            __pyx_t_9 = (__pyx_t_10 != Py_None);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          if (__pyx_t_9) { +          __pyx_t_14 = (__pyx_t_9 != 0); +          if (__pyx_t_14) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1097 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1097   *                         suffix_link = self.rules.root   *                         if node.suffix_link is not None:   *                             suffix_link = node.suffix_link.children[word_id]             # <<<<<<<<<<<<<<   *                         new_node = ExtendedTrieNode(phrase_location=phrase_location,   *                                 suffix_link=suffix_link,   */ -            __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12);              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;              __pyx_t_10 = PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_word_id); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -48932,7 +49677,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            }            __pyx_L37:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1098 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1098   *                         if node.suffix_link is not None:   *                             suffix_link = node.suffix_link.children[word_id]   *                         new_node = ExtendedTrieNode(phrase_location=phrase_location,             # <<<<<<<<<<<<<< @@ -48943,7 +49688,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __Pyx_GOTREF(((PyObject *)__pyx_t_10));            if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__phrase_location), ((PyObject *)__pyx_cur_scope->__pyx_v_phrase_location)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1099 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1099   *                             suffix_link = node.suffix_link.children[word_id]   *                         new_node = ExtendedTrieNode(phrase_location=phrase_location,   *                                 suffix_link=suffix_link,             # <<<<<<<<<<<<<< @@ -48952,7 +49697,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__suffix_link), __pyx_cur_scope->__pyx_v_suffix_link) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1100 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1100   *                         new_node = ExtendedTrieNode(phrase_location=phrase_location,   *                                 suffix_link=suffix_link,   *                                 phrase=hiero_phrase)             # <<<<<<<<<<<<<< @@ -48971,19 +49716,19 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          }          __pyx_L33:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1101 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1101   *                                 suffix_link=suffix_link,   *                                 phrase=hiero_phrase)   *                     node.children[word_id] = new_node             # <<<<<<<<<<<<<<   *                     node = new_node   *    */ -        __pyx_t_12 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_12);          if (PyObject_SetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_word_id, __pyx_cur_scope->__pyx_v_new_node) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1102 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1102   *                                 phrase=hiero_phrase)   *                     node.children[word_id] = new_node   *                     node = new_node             # <<<<<<<<<<<<<< @@ -48996,17 +49741,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_new_node);          __pyx_cur_scope->__pyx_v_node = __pyx_cur_scope->__pyx_v_new_node; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1107 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1107   *                     This should happen before we get to extraction (so that   *                     the node will exist if needed)'''   *                     if arity < self.max_nonterminals:             # <<<<<<<<<<<<<<   *                         xcat_index = arity+1   *                         xcat = sym_setindex(self.category, xcat_index)   */ -        __pyx_t_9 = (__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals); -        if (__pyx_t_9) { +        __pyx_t_14 = ((__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals) != 0); +        if (__pyx_t_14) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1108 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1108   *                     the node will exist if needed)'''   *                     if arity < self.max_nonterminals:   *                         xcat_index = arity+1             # <<<<<<<<<<<<<< @@ -49021,17 +49766,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __pyx_cur_scope->__pyx_v_xcat_index = __pyx_t_12;            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1109 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1109   *                     if arity < self.max_nonterminals:   *                         xcat_index = arity+1   *                         xcat = sym_setindex(self.category, xcat_index)             # <<<<<<<<<<<<<<   *                         suffix_link_xcat_index = xcat_index   *                         if is_shadow_path:   */ -          __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_xcat_index); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __pyx_cur_scope->__pyx_v_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_20); +          __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_xcat_index); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_cur_scope->__pyx_v_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_21); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1110 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1110   *                         xcat_index = arity+1   *                         xcat = sym_setindex(self.category, xcat_index)   *                         suffix_link_xcat_index = xcat_index             # <<<<<<<<<<<<<< @@ -49044,17 +49789,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xcat_index);            __pyx_cur_scope->__pyx_v_suffix_link_xcat_index = __pyx_cur_scope->__pyx_v_xcat_index; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1111 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1111   *                         xcat = sym_setindex(self.category, xcat_index)   *                         suffix_link_xcat_index = xcat_index   *                         if is_shadow_path:             # <<<<<<<<<<<<<<   *                             suffix_link_xcat_index = xcat_index-1   *                         suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)   */ -          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          if (__pyx_t_9) { +          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          if (__pyx_t_14) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1112 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1112   *                         suffix_link_xcat_index = xcat_index   *                         if is_shadow_path:   *                             suffix_link_xcat_index = xcat_index-1             # <<<<<<<<<<<<<< @@ -49072,17 +49817,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            }            __pyx_L39:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1113 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1113   *                         if is_shadow_path:   *                             suffix_link_xcat_index = xcat_index-1   *                         suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)             # <<<<<<<<<<<<<<   *                         node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,   *                                 suffix_link=node.suffix_link.children[suffix_link_xcat],   */ -          __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __pyx_cur_scope->__pyx_v_suffix_link_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_20); +          __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_suffix_link_xcat_index); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_cur_scope->__pyx_v_suffix_link_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_21); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1114 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1114   *                             suffix_link_xcat_index = xcat_index-1   *                         suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)   *                         node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,             # <<<<<<<<<<<<<< @@ -49091,30 +49836,30 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(((PyObject *)__pyx_t_12)); -          __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__phrase_location), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1115 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1115   *                         suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)   *                         node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,   *                                 suffix_link=node.suffix_link.children[suffix_link_xcat],             # <<<<<<<<<<<<<<   *                                 phrase= Phrase(phrase + (xcat,)))   *    */ -          __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__suffix_link); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_17 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_17, __pyx_cur_scope->__pyx_v_suffix_link_xcat, sizeof(int), PyInt_FromLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_18, __pyx_cur_scope->__pyx_v_suffix_link_xcat, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__suffix_link), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1116 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1116   *                         node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,   *                                 suffix_link=node.suffix_link.children[suffix_link_xcat],   *                                 phrase= Phrase(phrase + (xcat,)))             # <<<<<<<<<<<<<< @@ -49123,75 +49868,75 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_xcat); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_10); +          __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);            __Pyx_GIVEREF(__pyx_t_10);            __pyx_t_10 = 0; -          __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_17)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; -          __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_10); +          __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0; +          __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);            __Pyx_GIVEREF(__pyx_t_10);            __pyx_t_10 = 0; -          __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;            if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__phrase), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_ExtendedTrieNode)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1114 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1114   *                             suffix_link_xcat_index = xcat_index-1   *                         suffix_link_xcat = sym_setindex(self.category, suffix_link_xcat_index)   *                         node.children[xcat] = ExtendedTrieNode(phrase_location=node.phrase_location,             # <<<<<<<<<<<<<<   *                                 suffix_link=node.suffix_link.children[suffix_link_xcat],   *                                 phrase= Phrase(phrase + (xcat,)))   */ -          __pyx_t_12 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_12); -          if (__Pyx_SetItemInt(__pyx_t_12, __pyx_cur_scope->__pyx_v_xcat, __pyx_t_10, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          if (__Pyx_SetItemInt(__pyx_t_12, __pyx_cur_scope->__pyx_v_xcat, __pyx_t_10, sizeof(int), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            goto __pyx_L38;          }          __pyx_L38:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1119 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1119   *    *                     # sample from range   *                     if not is_shadow_path:             # <<<<<<<<<<<<<<   *                         sample = self.sampler.sample(node.phrase_location)   *                         num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns   */ -        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_21 = (!__pyx_t_9); -        if (__pyx_t_21) { +        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = ((!__pyx_t_14) != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1120 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1120   *                     # sample from range   *                     if not is_shadow_path:   *                         sample = self.sampler.sample(node.phrase_location)             # <<<<<<<<<<<<<<   *                         num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns   *                         chunklen = IntList(initial_len=num_subpatterns)   */ -          __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self->sampler), __pyx_n_s__sample); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->sampler), __pyx_n_s__sample); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_12 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_12); -          __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_12); +          __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12);            __Pyx_GIVEREF(__pyx_t_12);            __pyx_t_12 = 0; -          __pyx_t_12 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_12 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_12);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;            if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_sample));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_sample)); @@ -49199,19 +49944,20 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __pyx_cur_scope->__pyx_v_sample = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_12);            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1121 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1121   *                     if not is_shadow_path:   *                         sample = self.sampler.sample(node.phrase_location)   *                         num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns             # <<<<<<<<<<<<<<   *                         chunklen = IntList(initial_len=num_subpatterns)   *                         for j from 0 <= j < num_subpatterns:   */ -          __pyx_t_12 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__phrase_location); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_12); -          __pyx_cur_scope->__pyx_v_num_subpatterns = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_12)->num_subpatterns; +          __pyx_t_21 = ((struct __pyx_obj_3_sa_PhraseLocation *)__pyx_t_12)->num_subpatterns;            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +          __pyx_cur_scope->__pyx_v_num_subpatterns = __pyx_t_21; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1122 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1122   *                         sample = self.sampler.sample(node.phrase_location)   *                         num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns   *                         chunklen = IntList(initial_len=num_subpatterns)             # <<<<<<<<<<<<<< @@ -49220,30 +49966,30 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(((PyObject *)__pyx_t_12)); -          __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_subpatterns); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_17) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -          __pyx_t_17 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_subpatterns); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__initial_len), __pyx_t_18) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +          __pyx_t_18 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_chunklen));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_chunklen)); -          __Pyx_GIVEREF(__pyx_t_17); -          __pyx_cur_scope->__pyx_v_chunklen = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_17); -          __pyx_t_17 = 0; +          __Pyx_GIVEREF(__pyx_t_18); +          __pyx_cur_scope->__pyx_v_chunklen = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_18); +          __pyx_t_18 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1123 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1123   *                         num_subpatterns = (<PhraseLocation> node.phrase_location).num_subpatterns   *                         chunklen = IntList(initial_len=num_subpatterns)   *                         for j from 0 <= j < num_subpatterns:             # <<<<<<<<<<<<<<   *                             chunklen.arr[j] = hiero_phrase.chunklen(j)   *                         extracts = []   */ -          __pyx_t_20 = __pyx_cur_scope->__pyx_v_num_subpatterns; -          for (__pyx_cur_scope->__pyx_v_j = 0; __pyx_cur_scope->__pyx_v_j < __pyx_t_20; __pyx_cur_scope->__pyx_v_j++) { +          __pyx_t_21 = __pyx_cur_scope->__pyx_v_num_subpatterns; +          for (__pyx_cur_scope->__pyx_v_j = 0; __pyx_cur_scope->__pyx_v_j < __pyx_t_21; __pyx_cur_scope->__pyx_v_j++) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1124 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1124   *                         chunklen = IntList(initial_len=num_subpatterns)   *                         for j from 0 <= j < num_subpatterns:   *                             chunklen.arr[j] = hiero_phrase.chunklen(j)             # <<<<<<<<<<<<<< @@ -49253,22 +49999,22 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              (__pyx_cur_scope->__pyx_v_chunklen->arr[__pyx_cur_scope->__pyx_v_j]) = ((struct __pyx_vtabstruct_3_sa_Phrase *)__pyx_cur_scope->__pyx_v_hiero_phrase->__pyx_vtab)->chunklen(__pyx_cur_scope->__pyx_v_hiero_phrase, __pyx_cur_scope->__pyx_v_j);            } -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1125 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1125   *                         for j from 0 <= j < num_subpatterns:   *                             chunklen.arr[j] = hiero_phrase.chunklen(j)   *                         extracts = []             # <<<<<<<<<<<<<<   *                         j = 0   *                         extract_start = monitor_cpu()   */ -          __pyx_t_17 = PyList_New(0); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_extracts));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_extracts)); -          __Pyx_GIVEREF(((PyObject *)__pyx_t_17)); -          __pyx_cur_scope->__pyx_v_extracts = __pyx_t_17; -          __pyx_t_17 = 0; +          __Pyx_GIVEREF(((PyObject *)__pyx_t_18)); +          __pyx_cur_scope->__pyx_v_extracts = ((PyObject*)__pyx_t_18); +          __pyx_t_18 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1126 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1126   *                             chunklen.arr[j] = hiero_phrase.chunklen(j)   *                         extracts = []   *                         j = 0             # <<<<<<<<<<<<<< @@ -49277,25 +50023,25 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_cur_scope->__pyx_v_j = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1127 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1127   *                         extracts = []   *                         j = 0   *                         extract_start = monitor_cpu()             # <<<<<<<<<<<<<<   *                         while j < sample.len:   *                             extract = []   */ -          __pyx_t_17 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          __pyx_t_12 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_12 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_12); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_extract_start);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_extract_start);            __Pyx_GIVEREF(__pyx_t_12);            __pyx_cur_scope->__pyx_v_extract_start = __pyx_t_12;            __pyx_t_12 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1128 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1128   *                         j = 0   *                         extract_start = monitor_cpu()   *                         while j < sample.len:             # <<<<<<<<<<<<<< @@ -49303,10 +50049,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   *    */            while (1) { -            __pyx_t_21 = (__pyx_cur_scope->__pyx_v_j < __pyx_cur_scope->__pyx_v_sample->len); -            if (!__pyx_t_21) break; +            __pyx_t_9 = ((__pyx_cur_scope->__pyx_v_j < __pyx_cur_scope->__pyx_v_sample->len) != 0); +            if (!__pyx_t_9) break; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1129 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1129   *                         extract_start = monitor_cpu()   *                         while j < sample.len:   *                             extract = []             # <<<<<<<<<<<<<< @@ -49321,7 +50067,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_extract = ((PyObject *)__pyx_t_12);              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1131 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1131   *                             extract = []   *    *                             assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)             # <<<<<<<<<<<<<< @@ -49330,30 +50076,30 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */              __pyx_f_3_sa_assign_matching((&__pyx_cur_scope->__pyx_v_matching), __pyx_cur_scope->__pyx_v_sample->arr, __pyx_cur_scope->__pyx_v_j, __pyx_cur_scope->__pyx_v_num_subpatterns, __pyx_cur_scope->__pyx_v_self->fda->sent_id->arr); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1132 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1132   *    *                             assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)   *                             loc = tuple(sample[j:j+num_subpatterns])             # <<<<<<<<<<<<<<   *                             extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)   *                             extracts.extend([(e, loc) for e in extract])   */ -            __pyx_t_12 = __Pyx_PySequence_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_sample), __pyx_cur_scope->__pyx_v_j, (__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_num_subpatterns)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_12 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_sample), __pyx_cur_scope->__pyx_v_j, (__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_num_subpatterns), NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12); -            __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); -            PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_12); +            __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12);              __Pyx_GIVEREF(__pyx_t_12);              __pyx_t_12 = 0; -            __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_18), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12); -            __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +            __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_loc);              __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_loc);              __Pyx_GIVEREF(__pyx_t_12);              __pyx_cur_scope->__pyx_v_loc = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1133 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1133   *                             assign_matching(&matching, sample.arr, j, num_subpatterns, self.fda.sent_id.arr)   *                             loc = tuple(sample[j:j+num_subpatterns])   *                             extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)             # <<<<<<<<<<<<<< @@ -49368,17 +50114,17 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_extract = __pyx_t_12;              __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1134 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1134   *                             loc = tuple(sample[j:j+num_subpatterns])   *                             extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)   *                             extracts.extend([(e, loc) for e in extract])             # <<<<<<<<<<<<<<   *                             j = j + num_subpatterns   *    */ -            __pyx_t_12 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_extracts), __pyx_n_s__extend); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_extracts), __pyx_n_s__extend); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12); -            __pyx_t_17 = PyList_New(0); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_extract) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_extract)) {                __pyx_t_10 = __pyx_cur_scope->__pyx_v_extract; __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0;                __pyx_t_22 = NULL; @@ -49390,51 +50136,58 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              for (;;) {                if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_10)) {                  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break; -                __pyx_t_16 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_16); __pyx_t_6++; +                #if CYTHON_COMPILING_IN_CPYTHON +                __pyx_t_17 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                #else +                __pyx_t_17 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                #endif                } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_10)) {                  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_10)) break; -                __pyx_t_16 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_16); __pyx_t_6++; +                #if CYTHON_COMPILING_IN_CPYTHON +                __pyx_t_17 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                #else +                __pyx_t_17 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                #endif                } else { -                __pyx_t_16 = __pyx_t_22(__pyx_t_10); -                if (unlikely(!__pyx_t_16)) { +                __pyx_t_17 = __pyx_t_22(__pyx_t_10); +                if (unlikely(!__pyx_t_17)) {                    if (PyErr_Occurred()) {                      if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    }                    break;                  } -                __Pyx_GOTREF(__pyx_t_16); +                __Pyx_GOTREF(__pyx_t_17);                }                __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);                __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e); -              __Pyx_GIVEREF(__pyx_t_16); -              __pyx_cur_scope->__pyx_v_e = __pyx_t_16; -              __pyx_t_16 = 0; -              __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_16); +              __Pyx_GIVEREF(__pyx_t_17); +              __pyx_cur_scope->__pyx_v_e = __pyx_t_17; +              __pyx_t_17 = 0; +              __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_17);                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e); -              PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_cur_scope->__pyx_v_e); +              PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_cur_scope->__pyx_v_e);                __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loc); -              PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_cur_scope->__pyx_v_loc); +              PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_cur_scope->__pyx_v_loc);                __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loc); -              if (unlikely(PyList_Append(__pyx_t_17, (PyObject*)__pyx_t_16))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; +              if (unlikely(__Pyx_ListComp_Append(__pyx_t_18, (PyObject*)__pyx_t_17))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;              }              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;              __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __Pyx_INCREF(((PyObject *)__pyx_t_17)); -            PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_17)); -            __Pyx_GIVEREF(((PyObject *)__pyx_t_17)); -            __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; -            __pyx_t_17 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_18)); +            __Pyx_GIVEREF(((PyObject *)__pyx_t_18)); +            __pyx_t_18 = 0; +            __pyx_t_18 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1135 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1135   *                             extract = self.extract(hiero_phrase, &matching, chunklen.arr, num_subpatterns)   *                             extracts.extend([(e, loc) for e in extract])   *                             j = j + num_subpatterns             # <<<<<<<<<<<<<< @@ -49444,7 +50197,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_j = (__pyx_cur_scope->__pyx_v_j + __pyx_cur_scope->__pyx_v_num_subpatterns);            } -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1137 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1137   *                             j = j + num_subpatterns   *    *                         num_samples = sample.len/num_subpatterns             # <<<<<<<<<<<<<< @@ -49452,34 +50205,46 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   *                         self.extract_time = self.extract_time + extract_stop - extract_start   */            if (unlikely(__pyx_cur_scope->__pyx_v_num_subpatterns == 0)) { +            #ifdef WITH_THREAD +            PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +            #endif              PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); +            #ifdef WITH_THREAD +            PyGILState_Release(__pyx_gilstate_save); +            #endif              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            else if (sizeof(int) == sizeof(long) && unlikely(__pyx_cur_scope->__pyx_v_num_subpatterns == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_cur_scope->__pyx_v_sample->len))) { +            #ifdef WITH_THREAD +            PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +            #endif              PyErr_Format(PyExc_OverflowError, "value too large to perform division"); +            #ifdef WITH_THREAD +            PyGILState_Release(__pyx_gilstate_save); +            #endif              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            __pyx_cur_scope->__pyx_v_num_samples = __Pyx_div_int(__pyx_cur_scope->__pyx_v_sample->len, __pyx_cur_scope->__pyx_v_num_subpatterns); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1138 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1138   *    *                         num_samples = sample.len/num_subpatterns   *                         extract_stop = monitor_cpu()             # <<<<<<<<<<<<<<   *                         self.extract_time = self.extract_time + extract_stop - extract_start   *                         if len(extracts) > 0:   */ -          __pyx_t_17 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); -          __pyx_t_10 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_extract_stop);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_extract_stop);            __Pyx_GIVEREF(__pyx_t_10);            __pyx_cur_scope->__pyx_v_extract_stop = __pyx_t_10;            __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1139 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1139   *                         num_samples = sample.len/num_subpatterns   *                         extract_stop = monitor_cpu()   *                         self.extract_time = self.extract_time + extract_stop - extract_start             # <<<<<<<<<<<<<< @@ -49488,64 +50253,64 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->extract_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_17 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_extract_stop); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_18 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_extract_stop); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __pyx_t_10 = PyNumber_Subtract(__pyx_t_17, __pyx_cur_scope->__pyx_v_extract_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyNumber_Subtract(__pyx_t_18, __pyx_cur_scope->__pyx_v_extract_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_10); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            __pyx_cur_scope->__pyx_v_self->extract_time = __pyx_t_4; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1140 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1140   *                         extract_stop = monitor_cpu()   *                         self.extract_time = self.extract_time + extract_stop - extract_start   *                         if len(extracts) > 0:             # <<<<<<<<<<<<<<   *                             fcount = Counter()   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))   */ -          __pyx_t_6 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_extracts));  -          __pyx_t_21 = (__pyx_t_6 > 0); -          if (__pyx_t_21) { +          __pyx_t_6 = PyList_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_extracts)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = ((__pyx_t_6 > 0) != 0); +          if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1141 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1141   *                         self.extract_time = self.extract_time + extract_stop - extract_start   *                         if len(extracts) > 0:   *                             fcount = Counter()             # <<<<<<<<<<<<<<   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))   *                             for (f, e, count, als), loc in extracts:   */ -            __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__Counter); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__Counter); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_17 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            __pyx_t_18 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_fcount);              __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_fcount); -            __Pyx_GIVEREF(__pyx_t_17); -            __pyx_cur_scope->__pyx_v_fcount = __pyx_t_17; -            __pyx_t_17 = 0; +            __Pyx_GIVEREF(__pyx_t_18); +            __pyx_cur_scope->__pyx_v_fcount = __pyx_t_18; +            __pyx_t_18 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1142 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1142   *                         if len(extracts) > 0:   *                             fcount = Counter()   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))             # <<<<<<<<<<<<<<   *                             for (f, e, count, als), loc in extracts:   *                                 fcount[f] += count   */ -            __pyx_t_17 = __Pyx_GetName(__pyx_m, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); -            __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_lambda4, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__defaultdict); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_lambda4, 0, __pyx_n_s_127, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10);              __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_12);              PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10);              __pyx_t_10 = 0; -            __pyx_t_10 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_fphrases);              __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_fphrases); @@ -49553,7 +50318,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_cur_scope->__pyx_v_fphrases = __pyx_t_10;              __pyx_t_10 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1143 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1143   *                             fcount = Counter()   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))   *                             for (f, e, count, als), loc in extracts:             # <<<<<<<<<<<<<< @@ -49563,67 +50328,81 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              __pyx_t_10 = ((PyObject *)__pyx_cur_scope->__pyx_v_extracts); __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0;              for (;;) {                if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break; -              __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_12); __pyx_t_6++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_12); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #else +              __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #endif                if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {                  PyObject* sequence = __pyx_t_12; +                #if CYTHON_COMPILING_IN_CPYTHON +                Py_ssize_t size = Py_SIZE(sequence); +                #else +                Py_ssize_t size = PySequence_Size(sequence); +                #endif +                if (unlikely(size != 2)) { +                  if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                } +                #if CYTHON_COMPILING_IN_CPYTHON                  if (likely(PyTuple_CheckExact(sequence))) { -                  if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                    if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  } -                  __pyx_t_17 = PyTuple_GET_ITEM(sequence, 0);  -                  __pyx_t_16 = PyTuple_GET_ITEM(sequence, 1);  +                  __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);  +                  __pyx_t_17 = PyTuple_GET_ITEM(sequence, 1);                   } else { -                  if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                    if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  } -                  __pyx_t_17 = PyList_GET_ITEM(sequence, 0);  -                  __pyx_t_16 = PyList_GET_ITEM(sequence, 1);  +                  __pyx_t_18 = PyList_GET_ITEM(sequence, 0);  +                  __pyx_t_17 = PyList_GET_ITEM(sequence, 1);                   } +                __Pyx_INCREF(__pyx_t_18);                  __Pyx_INCREF(__pyx_t_17); -                __Pyx_INCREF(__pyx_t_16); +                #else +                __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                #endif                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              } else { +              } else +              {                  Py_ssize_t index = -1;                  __pyx_t_1 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                __pyx_t_19 = Py_TYPE(__pyx_t_1)->tp_iternext; -                index = 0; __pyx_t_17 = __pyx_t_19(__pyx_t_1); if (unlikely(!__pyx_t_17)) goto __pyx_L50_unpacking_failed; +                __pyx_t_20 = Py_TYPE(__pyx_t_1)->tp_iternext; +                index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_18)) goto __pyx_L50_unpacking_failed; +                __Pyx_GOTREF(__pyx_t_18); +                index = 1; __pyx_t_17 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_17)) goto __pyx_L50_unpacking_failed;                  __Pyx_GOTREF(__pyx_t_17); -                index = 1; __pyx_t_16 = __pyx_t_19(__pyx_t_1); if (unlikely(!__pyx_t_16)) goto __pyx_L50_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_16); -                if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_20 = NULL;                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                  goto __pyx_L51_unpacking_done;                  __pyx_L50_unpacking_failed:;                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +                __pyx_t_20 = NULL; +                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __pyx_L51_unpacking_done:;                } -              if ((likely(PyTuple_CheckExact(__pyx_t_17))) || (PyList_CheckExact(__pyx_t_17))) { -                PyObject* sequence = __pyx_t_17; +              if ((likely(PyTuple_CheckExact(__pyx_t_18))) || (PyList_CheckExact(__pyx_t_18))) { +                PyObject* sequence = __pyx_t_18; +                #if CYTHON_COMPILING_IN_CPYTHON +                Py_ssize_t size = Py_SIZE(sequence); +                #else +                Py_ssize_t size = PySequence_Size(sequence); +                #endif +                if (unlikely(size != 4)) { +                  if (size > 4) __Pyx_RaiseTooManyValuesError(4); +                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                } +                #if CYTHON_COMPILING_IN_CPYTHON                  if (likely(PyTuple_CheckExact(sequence))) { -                  if (unlikely(PyTuple_GET_SIZE(sequence) != 4)) { -                    if (PyTuple_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                    else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  }                    __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);                     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);                     __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);                     __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3);                   } else { -                  if (unlikely(PyList_GET_SIZE(sequence) != 4)) { -                    if (PyList_GET_SIZE(sequence) > 4) __Pyx_RaiseTooManyValuesError(4); -                    else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  }                    __pyx_t_1 = PyList_GET_ITEM(sequence, 0);                     __pyx_t_3 = PyList_GET_ITEM(sequence, 1);                     __pyx_t_11 = PyList_GET_ITEM(sequence, 2);  @@ -49633,28 +50412,37 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                  __Pyx_INCREF(__pyx_t_3);                  __Pyx_INCREF(__pyx_t_11);                  __Pyx_INCREF(__pyx_t_8); -                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -              } else { +                #else +                Py_ssize_t i; +                PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_11,&__pyx_t_8}; +                for (i=0; i < 4; i++) { +                  PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(item); +                  *(temps[i]) = item; +                } +                #endif +                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +              } else +              {                  Py_ssize_t index = -1; -                __pyx_t_15 = PyObject_GetIter(__pyx_t_17); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_15); -                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -                __pyx_t_19 = Py_TYPE(__pyx_t_15)->tp_iternext; -                index = 0; __pyx_t_1 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_1)) goto __pyx_L52_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_1); -                index = 1; __pyx_t_3 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_3)) goto __pyx_L52_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_3); -                index = 2; __pyx_t_11 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_11)) goto __pyx_L52_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_11); -                index = 3; __pyx_t_8 = __pyx_t_19(__pyx_t_15); if (unlikely(!__pyx_t_8)) goto __pyx_L52_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_8); -                if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_15), 4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +                PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_3,&__pyx_t_11,&__pyx_t_8}; +                __pyx_t_16 = PyObject_GetIter(__pyx_t_18); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_16); +                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +                __pyx_t_20 = Py_TYPE(__pyx_t_16)->tp_iternext; +                for (index=0; index < 4; index++) { +                  PyObject* item = __pyx_t_20(__pyx_t_16); if (unlikely(!item)) goto __pyx_L52_unpacking_failed; +                  __Pyx_GOTREF(item); +                  *(temps[index]) = item; +                } +                if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_16), 4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_20 = NULL; +                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;                  goto __pyx_L53_unpacking_done;                  __pyx_L52_unpacking_failed:; -                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -                if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +                __pyx_t_20 = NULL; +                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __pyx_L53_unpacking_done:;                } @@ -49680,11 +50468,11 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                __pyx_t_8 = 0;                __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_loc);                __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_loc); -              __Pyx_GIVEREF(__pyx_t_16); -              __pyx_cur_scope->__pyx_v_loc = __pyx_t_16; -              __pyx_t_16 = 0; +              __Pyx_GIVEREF(__pyx_t_17); +              __pyx_cur_scope->__pyx_v_loc = __pyx_t_17; +              __pyx_t_17 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1144 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1144   *                             fphrases = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))   *                             for (f, e, count, als), loc in extracts:   *                                 fcount[f] += count             # <<<<<<<<<<<<<< @@ -49693,16 +50481,16 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */                __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f);                __pyx_t_12 = __pyx_cur_scope->__pyx_v_f; -              __pyx_t_16 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12); if (!__pyx_t_16) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_16); -              __pyx_t_17 = PyNumber_InPlaceAdd(__pyx_t_16, __pyx_cur_scope->__pyx_v_count); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_17); -              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -              if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12, __pyx_t_17) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_t_17, __pyx_cur_scope->__pyx_v_count); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18);                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +              if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_t_12, __pyx_t_18) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1145 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1145   *                             for (f, e, count, als), loc in extracts:   *                                 fcount[f] += count   *                                 fphrases[f][e][als].append(loc)             # <<<<<<<<<<<<<< @@ -49711,365 +50499,258 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */                __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fphrases, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_12); -              __pyx_t_17 = PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_17); +              __pyx_t_18 = PyObject_GetItem(__pyx_t_12, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18);                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              __pyx_t_12 = PyObject_GetItem(__pyx_t_17, __pyx_cur_scope->__pyx_v_als); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_12 = PyObject_GetItem(__pyx_t_18, __pyx_cur_scope->__pyx_v_als); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_12); -              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -              __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_12, __pyx_cur_scope->__pyx_v_loc); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_17); +              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +              __pyx_t_18 = __Pyx_PyObject_Append(__pyx_t_12, __pyx_cur_scope->__pyx_v_loc); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18);                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              }              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1146 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1146   *                                 fcount[f] += count   *                                 fphrases[f][e][als].append(loc)   *                             for f, elist in fphrases.iteritems():             # <<<<<<<<<<<<<<   *                                 for e, alslist in elist.iteritems():   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))   */ -            __pyx_t_10 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_fphrases, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_17 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); -            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -            if (PyList_CheckExact(__pyx_t_17) || PyTuple_CheckExact(__pyx_t_17)) { -              __pyx_t_10 = __pyx_t_17; __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0; -              __pyx_t_22 = NULL; -            } else { -              __pyx_t_6 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_17); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_10); -              __pyx_t_22 = Py_TYPE(__pyx_t_10)->tp_iternext; +            __pyx_t_6 = 0; +            if (unlikely(__pyx_cur_scope->__pyx_v_fphrases == Py_None)) { +              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              } -            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -            for (;;) { -              if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_10)) { -                if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break; -                __pyx_t_17 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; -              } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_10)) { -                if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_10)) break; -                __pyx_t_17 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_17); __pyx_t_6++; -              } else { -                __pyx_t_17 = __pyx_t_22(__pyx_t_10); -                if (unlikely(!__pyx_t_17)) { -                  if (PyErr_Occurred()) { -                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                    else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  } -                  break; -                } -                __Pyx_GOTREF(__pyx_t_17); -              } -              if ((likely(PyTuple_CheckExact(__pyx_t_17))) || (PyList_CheckExact(__pyx_t_17))) { -                PyObject* sequence = __pyx_t_17; -                if (likely(PyTuple_CheckExact(sequence))) { -                  if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                    if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  } -                  __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0);  -                  __pyx_t_16 = PyTuple_GET_ITEM(sequence, 1);  -                } else { -                  if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                    if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                    else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  } -                  __pyx_t_12 = PyList_GET_ITEM(sequence, 0);  -                  __pyx_t_16 = PyList_GET_ITEM(sequence, 1);  -                } -                __Pyx_INCREF(__pyx_t_12); -                __Pyx_INCREF(__pyx_t_16); -                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -              } else { -                Py_ssize_t index = -1; -                __pyx_t_8 = PyObject_GetIter(__pyx_t_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_8); -                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -                __pyx_t_19 = Py_TYPE(__pyx_t_8)->tp_iternext; -                index = 0; __pyx_t_12 = __pyx_t_19(__pyx_t_8); if (unlikely(!__pyx_t_12)) goto __pyx_L56_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_12); -                index = 1; __pyx_t_16 = __pyx_t_19(__pyx_t_8); if (unlikely(!__pyx_t_16)) goto __pyx_L56_unpacking_failed; -                __Pyx_GOTREF(__pyx_t_16); -                if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -                goto __pyx_L57_unpacking_done; -                __pyx_L56_unpacking_failed:; -                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -                if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __pyx_L57_unpacking_done:; -              } +            __pyx_t_18 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_v_fphrases, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_23), (&__pyx_t_21)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            __Pyx_XDECREF(__pyx_t_10); +            __pyx_t_10 = __pyx_t_18; +            __pyx_t_18 = 0; +            while (1) { +              __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_10, __pyx_t_23, &__pyx_t_6, &__pyx_t_18, &__pyx_t_12, NULL, __pyx_t_21); +              if (unlikely(__pyx_t_7 == 0)) break; +              if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18); +              __Pyx_GOTREF(__pyx_t_12);                __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);                __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_f); -              __Pyx_GIVEREF(__pyx_t_12); -              __pyx_cur_scope->__pyx_v_f = __pyx_t_12; -              __pyx_t_12 = 0; +              __Pyx_GIVEREF(__pyx_t_18); +              __pyx_cur_scope->__pyx_v_f = __pyx_t_18; +              __pyx_t_18 = 0;                __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_elist);                __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_elist); -              __Pyx_GIVEREF(__pyx_t_16); -              __pyx_cur_scope->__pyx_v_elist = __pyx_t_16; -              __pyx_t_16 = 0; +              __Pyx_GIVEREF(__pyx_t_12); +              __pyx_cur_scope->__pyx_v_elist = __pyx_t_12; +              __pyx_t_12 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1147 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1147   *                                 fphrases[f][e][als].append(loc)   *                             for f, elist in fphrases.iteritems():   *                                 for e, alslist in elist.iteritems():             # <<<<<<<<<<<<<<   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))   *                                     locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))   */ -              __pyx_t_17 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_elist, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_17); -              __pyx_t_16 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __Pyx_GOTREF(__pyx_t_16); -              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -              if (PyList_CheckExact(__pyx_t_16) || PyTuple_CheckExact(__pyx_t_16)) { -                __pyx_t_17 = __pyx_t_16; __Pyx_INCREF(__pyx_t_17); __pyx_t_23 = 0; -                __pyx_t_24 = NULL; -              } else { -                __pyx_t_23 = -1; __pyx_t_17 = PyObject_GetIter(__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_17); -                __pyx_t_24 = Py_TYPE(__pyx_t_17)->tp_iternext; +              __pyx_t_24 = 0; +              if (unlikely(__pyx_cur_scope->__pyx_v_elist == Py_None)) { +                PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems"); +                {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                } -              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -              for (;;) { -                if (!__pyx_t_24 && PyList_CheckExact(__pyx_t_17)) { -                  if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_17)) break; -                  __pyx_t_16 = PyList_GET_ITEM(__pyx_t_17, __pyx_t_23); __Pyx_INCREF(__pyx_t_16); __pyx_t_23++; -                } else if (!__pyx_t_24 && PyTuple_CheckExact(__pyx_t_17)) { -                  if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_17)) break; -                  __pyx_t_16 = PyTuple_GET_ITEM(__pyx_t_17, __pyx_t_23); __Pyx_INCREF(__pyx_t_16); __pyx_t_23++; -                } else { -                  __pyx_t_16 = __pyx_t_24(__pyx_t_17); -                  if (unlikely(!__pyx_t_16)) { -                    if (PyErr_Occurred()) { -                      if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    } -                    break; -                  } -                  __Pyx_GOTREF(__pyx_t_16); -                } -                if ((likely(PyTuple_CheckExact(__pyx_t_16))) || (PyList_CheckExact(__pyx_t_16))) { -                  PyObject* sequence = __pyx_t_16; -                  if (likely(PyTuple_CheckExact(sequence))) { -                    if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                      if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    } -                    __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0);  -                    __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);  -                  } else { -                    if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                      if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    } -                    __pyx_t_12 = PyList_GET_ITEM(sequence, 0);  -                    __pyx_t_8 = PyList_GET_ITEM(sequence, 1);  -                  } -                  __Pyx_INCREF(__pyx_t_12); -                  __Pyx_INCREF(__pyx_t_8); -                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -                } else { -                  Py_ssize_t index = -1; -                  __pyx_t_11 = PyObject_GetIter(__pyx_t_16); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  __Pyx_GOTREF(__pyx_t_11); -                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -                  __pyx_t_19 = Py_TYPE(__pyx_t_11)->tp_iternext; -                  index = 0; __pyx_t_12 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_12)) goto __pyx_L60_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_12); -                  index = 1; __pyx_t_8 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_8)) goto __pyx_L60_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_8); -                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -                  goto __pyx_L61_unpacking_done; -                  __pyx_L60_unpacking_failed:; -                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -                  if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                  if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  __pyx_L61_unpacking_done:; -                } +              __pyx_t_18 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_v_elist, 0, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_25), (&__pyx_t_7)); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18); +              __Pyx_XDECREF(__pyx_t_12); +              __pyx_t_12 = __pyx_t_18; +              __pyx_t_18 = 0; +              while (1) { +                __pyx_t_5 = __Pyx_dict_iter_next(__pyx_t_12, __pyx_t_25, &__pyx_t_24, &__pyx_t_18, &__pyx_t_17, NULL, __pyx_t_7); +                if (unlikely(__pyx_t_5 == 0)) break; +                if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __Pyx_GOTREF(__pyx_t_17);                  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);                  __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_e); -                __Pyx_GIVEREF(__pyx_t_12); -                __pyx_cur_scope->__pyx_v_e = __pyx_t_12; -                __pyx_t_12 = 0; +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_cur_scope->__pyx_v_e = __pyx_t_18; +                __pyx_t_18 = 0;                  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alslist);                  __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alslist); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_cur_scope->__pyx_v_alslist = __pyx_t_8; -                __pyx_t_8 = 0; +                __Pyx_GIVEREF(__pyx_t_17); +                __pyx_cur_scope->__pyx_v_alslist = __pyx_t_17; +                __pyx_t_17 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1148 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1148   *                             for f, elist in fphrases.iteritems():   *                                 for e, alslist in elist.iteritems():   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))             # <<<<<<<<<<<<<<   *                                     locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))   *                                     count = len(locs)   */ -                __pyx_t_16 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                __pyx_t_8 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                __pyx_t_18 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +                __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18); +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_t_18 = 0; +                __pyx_t_18 = PyDict_New(); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(((PyObject *)__pyx_t_18)); +                __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_1lambda6, 0, __pyx_n_s_127, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_8); -                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -                __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_8); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_t_8 = 0; -                __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(((PyObject *)__pyx_t_8)); -                __pyx_t_12 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_5input_1lambda6, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_12); -                if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__key), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                __pyx_t_12 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_16), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_12); -                __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; -                __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -                if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) { -                  PyObject* sequence = __pyx_t_12; +                if (PyDict_SetItem(__pyx_t_18, ((PyObject *)__pyx_n_s__key), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                __pyx_t_8 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_17), ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_8); +                __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +                __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0; +                if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { +                  PyObject* sequence = __pyx_t_8; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  Py_ssize_t size = Py_SIZE(sequence); +                  #else +                  Py_ssize_t size = PySequence_Size(sequence); +                  #endif +                  if (unlikely(size != 2)) { +                    if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                    else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  } +                  #if CYTHON_COMPILING_IN_CPYTHON                    if (likely(PyTuple_CheckExact(sequence))) { -                    if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                      if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    } -                    __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);  -                    __pyx_t_16 = PyTuple_GET_ITEM(sequence, 1);  +                    __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);  +                    __pyx_t_17 = PyTuple_GET_ITEM(sequence, 1);                     } else { -                    if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                      if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    } -                    __pyx_t_8 = PyList_GET_ITEM(sequence, 0);  -                    __pyx_t_16 = PyList_GET_ITEM(sequence, 1);  +                    __pyx_t_18 = PyList_GET_ITEM(sequence, 0);  +                    __pyx_t_17 = PyList_GET_ITEM(sequence, 1);                     } -                  __Pyx_INCREF(__pyx_t_8); -                  __Pyx_INCREF(__pyx_t_16); -                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                } else { +                  __Pyx_INCREF(__pyx_t_18); +                  __Pyx_INCREF(__pyx_t_17); +                  #else +                  __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_18); +                  __pyx_t_17 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_17); +                  #endif +                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                } else +                {                    Py_ssize_t index = -1; -                  __pyx_t_11 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_11); -                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                  __pyx_t_19 = Py_TYPE(__pyx_t_11)->tp_iternext; -                  index = 0; __pyx_t_8 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_8)) goto __pyx_L62_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_8); -                  index = 1; __pyx_t_16 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_16)) goto __pyx_L62_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_16); -                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                  __pyx_t_20 = Py_TYPE(__pyx_t_11)->tp_iternext; +                  index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_11); if (unlikely(!__pyx_t_18)) goto __pyx_L58_unpacking_failed; +                  __Pyx_GOTREF(__pyx_t_18); +                  index = 1; __pyx_t_17 = __pyx_t_20(__pyx_t_11); if (unlikely(!__pyx_t_17)) goto __pyx_L58_unpacking_failed; +                  __Pyx_GOTREF(__pyx_t_17); +                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_20 = NULL;                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -                  goto __pyx_L63_unpacking_done; -                  __pyx_L62_unpacking_failed:; +                  goto __pyx_L59_unpacking_done; +                  __pyx_L58_unpacking_failed:;                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -                  if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                  if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +                  __pyx_t_20 = NULL; +                  if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                  __pyx_L63_unpacking_done:; +                  __pyx_L59_unpacking_done:;                  }                  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alignment);                  __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alignment); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_cur_scope->__pyx_v_alignment = __pyx_t_8; -                __pyx_t_8 = 0; +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_cur_scope->__pyx_v_alignment = __pyx_t_18; +                __pyx_t_18 = 0;                  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_max_locs);                  __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_max_locs); -                __Pyx_GIVEREF(__pyx_t_16); -                __pyx_cur_scope->__pyx_v_max_locs = __pyx_t_16; -                __pyx_t_16 = 0; +                __Pyx_GIVEREF(__pyx_t_17); +                __pyx_cur_scope->__pyx_v_max_locs = __pyx_t_17; +                __pyx_t_17 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1149 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1149   *                                 for e, alslist in elist.iteritems():   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))   *                                     locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))             # <<<<<<<<<<<<<<   *                                     count = len(locs)   *                                     scores = self.scorer.score(FeatureContext(   */ -                __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__itertools); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_12); -                __pyx_t_16 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__chain); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                __pyx_t_12 = PyObject_GetAttr(__pyx_t_16, __pyx_n_s__from_iterable); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_12); -                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -                __pyx_t_16 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__itervalues); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                __pyx_t_8 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__itertools); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_8); -                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; -                __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_8); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_t_8 = 0; -                __pyx_t_8 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_8); -                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -                __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; -                __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_8); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_t_8 = 0; -                __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__chain); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s__from_iterable); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_8); -                __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; +                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +                __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_alslist, __pyx_n_s__itervalues); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                __pyx_t_18 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +                __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18); +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_t_18 = 0; +                __pyx_t_18 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0; +                __pyx_t_17 = PyTuple_New(1); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_18); +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_t_18 = 0; +                __pyx_t_18 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_17), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); +                __Pyx_DECREF(((PyObject *)__pyx_t_17)); __pyx_t_17 = 0;                  __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs));                  __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs)); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_cur_scope->__pyx_v_locs = ((PyObject*)__pyx_t_8); -                __pyx_t_8 = 0; +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_cur_scope->__pyx_v_locs = ((PyObject*)__pyx_t_18); +                __pyx_t_18 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1150 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1150   *                                     alignment, max_locs = max(alslist.iteritems(), key=lambda x: len(x[1]))   *                                     locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))   *                                     count = len(locs)             # <<<<<<<<<<<<<<   *                                     scores = self.scorer.score(FeatureContext(   *                                                f, e, count, fcount[f], num_samples,   */ -                __pyx_t_25 = PyTuple_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_locs));  -                __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_25); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_8); +                __pyx_t_26 = PyTuple_GET_SIZE(((PyObject *)__pyx_cur_scope->__pyx_v_locs)); if (unlikely(__pyx_t_26 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_18 = PyInt_FromSsize_t(__pyx_t_26); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18);                  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_count);                  __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_count); -                __Pyx_GIVEREF(__pyx_t_8); -                __pyx_cur_scope->__pyx_v_count = __pyx_t_8; -                __pyx_t_8 = 0; +                __Pyx_GIVEREF(__pyx_t_18); +                __pyx_cur_scope->__pyx_v_count = __pyx_t_18; +                __pyx_t_18 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1151 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1151   *                                     locs = tuple(itertools.chain.from_iterable(alslist.itervalues()))   *                                     count = len(locs)   *                                     scores = self.scorer.score(FeatureContext(             # <<<<<<<<<<<<<<   *                                                f, e, count, fcount[f], num_samples,   *                                                (k,i+spanlen), locs, input_match,   */ -                __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_8); +                __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_18); -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1152 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1152   *                                     count = len(locs)   *                                     scores = self.scorer.score(FeatureContext(   *                                                f, e, count, fcount[f], num_samples,             # <<<<<<<<<<<<<<   *                                                (k,i+spanlen), locs, input_match,   *                                                fwords, self.fda, self.eda,   */ -                __pyx_t_16 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_16) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_16); -                __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_samples); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_12); +                __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fcount, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_17); +                __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_num_samples); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_8); -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1153 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1153   *                                     scores = self.scorer.score(FeatureContext(   *                                                f, e, count, fcount[f], num_samples,   *                                                (k,i+spanlen), locs, input_match,             # <<<<<<<<<<<<<< @@ -50092,14 +50773,14 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                  __pyx_t_11 = 0;                  __pyx_t_1 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1157 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1157   *                                                meta,   *                                                # Include online stats.  None if none.   *                                                self.online_ctx_lookup(f, e)))             # <<<<<<<<<<<<<<   *                                     # Phrase pair processed   *                                     if self.online:   */ -                __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_11); @@ -50109,8 +50790,8 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);                  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_e);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e); -                __pyx_t_15 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_15); +                __pyx_t_16 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_16);                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;                  __pyx_t_11 = PyTuple_New(13); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -50124,10 +50805,10 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_count);                  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_cur_scope->__pyx_v_count);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_count); -                PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_16); -                __Pyx_GIVEREF(__pyx_t_16); -                PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_t_12); -                __Pyx_GIVEREF(__pyx_t_12); +                PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_17); +                __Pyx_GIVEREF(__pyx_t_17); +                PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_t_8); +                __Pyx_GIVEREF(__pyx_t_8);                  PyTuple_SET_ITEM(__pyx_t_11, 5, ((PyObject *)__pyx_t_3));                  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));                  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_locs)); @@ -50148,35 +50829,36 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_meta);                  PyTuple_SET_ITEM(__pyx_t_11, 11, __pyx_cur_scope->__pyx_v_meta);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_meta); -                PyTuple_SET_ITEM(__pyx_t_11, 12, __pyx_t_15); -                __Pyx_GIVEREF(__pyx_t_15); -                __pyx_t_16 = 0; -                __pyx_t_12 = 0; +                PyTuple_SET_ITEM(__pyx_t_11, 12, __pyx_t_16); +                __Pyx_GIVEREF(__pyx_t_16); +                __pyx_t_17 = 0; +                __pyx_t_8 = 0;                  __pyx_t_3 = 0; -                __pyx_t_15 = 0; -                __pyx_t_15 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_15); -                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +                __pyx_t_16 = 0; +                __pyx_t_16 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_16); +                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;                  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; -                __pyx_t_11 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_15)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_11 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_16)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_11); -                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;                  __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));                  __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));                  __Pyx_GIVEREF(__pyx_t_11);                  __pyx_cur_scope->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_11);                  __pyx_t_11 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1159 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1159   *                                                self.online_ctx_lookup(f, e)))   *                                     # Phrase pair processed   *                                     if self.online:             # <<<<<<<<<<<<<<   *                                         seen_phrases.add((f, e))   *                                     yield Rule(self.category, f, e, scores, alignment)   */ -                if (__pyx_cur_scope->__pyx_v_self->online) { +                __pyx_t_9 = (__pyx_cur_scope->__pyx_v_self->online != 0); +                if (__pyx_t_9) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1160 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1160   *                                     # Phrase pair processed   *                                     if self.online:   *                                         seen_phrases.add((f, e))             # <<<<<<<<<<<<<< @@ -50193,11 +50875,11 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene                    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);                    __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_seen_phrases, ((PyObject *)__pyx_t_11)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; -                  goto __pyx_L64; +                  goto __pyx_L60;                  } -                __pyx_L64:; +                __pyx_L60:; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1161 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1161   *                                     if self.online:   *                                         seen_phrases.add((f, e))   *                                     yield Rule(self.category, f, e, scores, alignment)             # <<<<<<<<<<<<<< @@ -50206,62 +50888,66 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */                  __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->category); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_11); -                __pyx_t_15 = PyTuple_New(5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_15); -                PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_11); +                __pyx_t_16 = PyTuple_New(5); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_16); +                PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_11);                  __Pyx_GIVEREF(__pyx_t_11);                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f); -                PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_f); +                PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_cur_scope->__pyx_v_f);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e); -                PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_cur_scope->__pyx_v_e); +                PyTuple_SET_ITEM(__pyx_t_16, 2, __pyx_cur_scope->__pyx_v_e);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);                  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores)); -                PyTuple_SET_ITEM(__pyx_t_15, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores)); +                PyTuple_SET_ITEM(__pyx_t_16, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores));                  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));                  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_alignment); -                PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_cur_scope->__pyx_v_alignment); +                PyTuple_SET_ITEM(__pyx_t_16, 4, __pyx_cur_scope->__pyx_v_alignment);                  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_alignment);                  __pyx_t_11 = 0; -                __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_11); -                __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +                __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;                  __pyx_r = __pyx_t_11;                  __pyx_t_11 = 0;                  __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;                  __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; +                __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;                  __Pyx_XGIVEREF(__pyx_t_10); -                __pyx_cur_scope->__pyx_t_2 = __pyx_t_10; -                __Pyx_XGIVEREF(__pyx_t_14); -                __pyx_cur_scope->__pyx_t_3 = __pyx_t_14; -                __Pyx_XGIVEREF(__pyx_t_17); -                __pyx_cur_scope->__pyx_t_4 = __pyx_t_17; -                __pyx_cur_scope->__pyx_t_5 = __pyx_t_22; -                __pyx_cur_scope->__pyx_t_6 = __pyx_t_23; -                __pyx_cur_scope->__pyx_t_7 = __pyx_t_24; +                __pyx_cur_scope->__pyx_t_3 = __pyx_t_10; +                __Pyx_XGIVEREF(__pyx_t_12); +                __pyx_cur_scope->__pyx_t_4 = __pyx_t_12; +                __Pyx_XGIVEREF(__pyx_t_15); +                __pyx_cur_scope->__pyx_t_5 = __pyx_t_15; +                __pyx_cur_scope->__pyx_t_6 = __pyx_t_21; +                __pyx_cur_scope->__pyx_t_7 = __pyx_t_23; +                __pyx_cur_scope->__pyx_t_8 = __pyx_t_24; +                __pyx_cur_scope->__pyx_t_9 = __pyx_t_25;                  __Pyx_XGIVEREF(__pyx_r);                  __Pyx_RefNannyFinishContext();                  /* return from generator, yielding value */                  __pyx_generator->resume_label = 1;                  return __pyx_r; -                __pyx_L65_resume_from_yield:; +                __pyx_L61_resume_from_yield:;                  __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;                  __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; -                __pyx_t_10 = __pyx_cur_scope->__pyx_t_2; -                __pyx_cur_scope->__pyx_t_2 = 0; -                __Pyx_XGOTREF(__pyx_t_10); -                __pyx_t_14 = __pyx_cur_scope->__pyx_t_3; +                __pyx_t_7 = __pyx_cur_scope->__pyx_t_2; +                __pyx_t_10 = __pyx_cur_scope->__pyx_t_3;                  __pyx_cur_scope->__pyx_t_3 = 0; -                __Pyx_XGOTREF(__pyx_t_14); -                __pyx_t_17 = __pyx_cur_scope->__pyx_t_4; +                __Pyx_XGOTREF(__pyx_t_10); +                __pyx_t_12 = __pyx_cur_scope->__pyx_t_4;                  __pyx_cur_scope->__pyx_t_4 = 0; -                __Pyx_XGOTREF(__pyx_t_17); -                __pyx_t_22 = __pyx_cur_scope->__pyx_t_5; -                __pyx_t_23 = __pyx_cur_scope->__pyx_t_6; -                __pyx_t_24 = __pyx_cur_scope->__pyx_t_7; +                __Pyx_XGOTREF(__pyx_t_12); +                __pyx_t_15 = __pyx_cur_scope->__pyx_t_5; +                __pyx_cur_scope->__pyx_t_5 = 0; +                __Pyx_XGOTREF(__pyx_t_15); +                __pyx_t_21 = __pyx_cur_scope->__pyx_t_6; +                __pyx_t_23 = __pyx_cur_scope->__pyx_t_7; +                __pyx_t_24 = __pyx_cur_scope->__pyx_t_8; +                __pyx_t_25 = __pyx_cur_scope->__pyx_t_9;                  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                } -              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;              }              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;              goto __pyx_L47; @@ -50274,83 +50960,81 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        }        __pyx_L32:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1163 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1163   *                                     yield Rule(self.category, f, e, scores, alignment)   *    *                 if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:             # <<<<<<<<<<<<<<   *                     for alt_id in range(len(fwords[i+spanlen])):   *                         new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))   */ -      __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_21 = (__pyx_t_6 < __pyx_cur_scope->__pyx_v_self->max_length); -      if (__pyx_t_21) { +      __pyx_t_23 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = (__pyx_t_23 < __pyx_cur_scope->__pyx_v_self->max_length); +      if (__pyx_t_9) {          __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10); -        __pyx_t_17 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); +        __pyx_t_12 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_12);          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;          __pyx_t_10 = __pyx_cur_scope->__pyx_v_fwords;          __Pyx_INCREF(__pyx_t_10); -        __pyx_t_6 = PyObject_Length(__pyx_t_10); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_23 = PyObject_Length(__pyx_t_10); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_23); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10); -        __pyx_t_11 = PyObject_RichCompare(__pyx_t_17, __pyx_t_10, Py_LT); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_11); -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; +        __pyx_t_11 = PyObject_RichCompare(__pyx_t_12, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -        if (__pyx_t_9) { +        if (__pyx_t_14) {            __pyx_t_11 = PyNumber_Add(__pyx_cur_scope->__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_11);            __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_17 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_LE); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_12 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_LE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_17); if (unlikely(__pyx_t_26 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -          __pyx_t_27 = __pyx_t_26; +          __pyx_t_27 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_27 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +          __pyx_t_28 = __pyx_t_27;          } else { -          __pyx_t_27 = __pyx_t_9; +          __pyx_t_28 = __pyx_t_14;          } -        __pyx_t_9 = __pyx_t_27; +        __pyx_t_14 = __pyx_t_28;        } else { -        __pyx_t_9 = __pyx_t_21; +        __pyx_t_14 = __pyx_t_9;        } -      if (__pyx_t_9) { +      if (__pyx_t_14) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1164 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1164   *    *                 if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:   *                     for alt_id in range(len(fwords[i+spanlen])):             # <<<<<<<<<<<<<<   *                         new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))   *                     num_subpatterns = arity   */ -        __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); -        __pyx_t_10 = PyNumber_Add(__pyx_t_17, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_12); +        __pyx_t_10 = PyNumber_Add(__pyx_t_12, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10); -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        __pyx_t_17 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_10); if (!__pyx_t_17) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_17); +        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +        __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fwords, __pyx_t_10); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_12);          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        __pyx_t_6 = PyObject_Length(__pyx_t_17); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; -        for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_6; __pyx_t_20+=1) { -          __pyx_cur_scope->__pyx_v_alt_id = __pyx_t_20; +        __pyx_t_23 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +        for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_23; __pyx_t_21+=1) { +          __pyx_cur_scope->__pyx_v_alt_id = __pyx_t_21; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1165 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1165   *                 if len(phrase) < self.max_length and i+spanlen < len(fwords) and pathlen+1 <= self.max_initial_size:   *                     for alt_id in range(len(fwords[i+spanlen])):   *                         new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))             # <<<<<<<<<<<<<<   *                     num_subpatterns = arity   *                     if not is_shadow_path:   */ -          __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_17); +          __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_12);            __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            __pyx_t_11 = PyNumber_Add(__pyx_t_10, __pyx_cur_scope->__pyx_v_spanlen); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -50358,39 +51042,39 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt_id); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_15 = PyNumber_Add(__pyx_cur_scope->__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_15); -          __pyx_t_8 = PyTuple_New(8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_17); -          __Pyx_GIVEREF(__pyx_t_17); -          PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11); +          __pyx_t_16 = PyNumber_Add(__pyx_cur_scope->__pyx_v_pathlen, __pyx_int_1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_16); +          __pyx_t_18 = PyTuple_New(8); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_12); +          __Pyx_GIVEREF(__pyx_t_12); +          PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_t_11);            __Pyx_GIVEREF(__pyx_t_11);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_input_match); -          PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_cur_scope->__pyx_v_input_match); +          PyTuple_SET_ITEM(__pyx_t_18, 2, __pyx_cur_scope->__pyx_v_input_match);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_input_match); -          PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_10); +          PyTuple_SET_ITEM(__pyx_t_18, 3, __pyx_t_10);            __Pyx_GIVEREF(__pyx_t_10); -          PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_15); -          __Pyx_GIVEREF(__pyx_t_15); +          PyTuple_SET_ITEM(__pyx_t_18, 4, __pyx_t_16); +          __Pyx_GIVEREF(__pyx_t_16);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_node); -          PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_cur_scope->__pyx_v_node); +          PyTuple_SET_ITEM(__pyx_t_18, 5, __pyx_cur_scope->__pyx_v_node);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_node);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_phrase); -          PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_cur_scope->__pyx_v_phrase); +          PyTuple_SET_ITEM(__pyx_t_18, 6, __pyx_cur_scope->__pyx_v_phrase);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_phrase);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path); -          PyTuple_SET_ITEM(__pyx_t_8, 7, __pyx_cur_scope->__pyx_v_is_shadow_path); +          PyTuple_SET_ITEM(__pyx_t_18, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path); -          __pyx_t_17 = 0; +          __pyx_t_12 = 0;            __pyx_t_11 = 0;            __pyx_t_10 = 0; -          __pyx_t_15 = 0; -          __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +          __pyx_t_16 = 0; +          __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_18)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0;          } -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1166 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1166   *                     for alt_id in range(len(fwords[i+spanlen])):   *                         new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))   *                     num_subpatterns = arity             # <<<<<<<<<<<<<< @@ -50399,18 +51083,18 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */          __pyx_cur_scope->__pyx_v_num_subpatterns = __pyx_cur_scope->__pyx_v_arity; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1167 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1167   *                         new_frontier.append((k, i+spanlen, input_match, alt_id, pathlen + 1, node, phrase, is_shadow_path))   *                     num_subpatterns = arity   *                     if not is_shadow_path:             # <<<<<<<<<<<<<<   *                         num_subpatterns = num_subpatterns + 1   *                     if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:   */ -        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_21 = (!__pyx_t_9); -        if (__pyx_t_21) { +        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_is_shadow_path); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = ((!__pyx_t_14) != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1168 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1168   *                     num_subpatterns = arity   *                     if not is_shadow_path:   *                         num_subpatterns = num_subpatterns + 1             # <<<<<<<<<<<<<< @@ -50418,34 +51102,34 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   *                         xcat = sym_setindex(self.category, arity+1)   */            __pyx_cur_scope->__pyx_v_num_subpatterns = (__pyx_cur_scope->__pyx_v_num_subpatterns + 1); -          goto __pyx_L69; +          goto __pyx_L65;          } -        __pyx_L69:; +        __pyx_L65:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1169 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1169   *                     if not is_shadow_path:   *                         num_subpatterns = num_subpatterns + 1   *                     if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:             # <<<<<<<<<<<<<<   *                         xcat = sym_setindex(self.category, arity+1)   *                         xnode = node.children[xcat]   */ -        __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_21 = ((__pyx_t_6 + 1) < __pyx_cur_scope->__pyx_v_self->max_length); -        if (__pyx_t_21) { -          __pyx_t_9 = (__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals); -          if (__pyx_t_9) { -            __pyx_t_27 = (__pyx_cur_scope->__pyx_v_num_subpatterns < __pyx_cur_scope->__pyx_v_self->max_chunks); -            __pyx_t_26 = __pyx_t_27; +        __pyx_t_23 = PyObject_Length(__pyx_cur_scope->__pyx_v_phrase); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = (((__pyx_t_23 + 1) < __pyx_cur_scope->__pyx_v_self->max_length) != 0); +        if (__pyx_t_9) { +          __pyx_t_14 = ((__pyx_cur_scope->__pyx_v_arity < __pyx_cur_scope->__pyx_v_self->max_nonterminals) != 0); +          if (__pyx_t_14) { +            __pyx_t_28 = ((__pyx_cur_scope->__pyx_v_num_subpatterns < __pyx_cur_scope->__pyx_v_self->max_chunks) != 0); +            __pyx_t_27 = __pyx_t_28;            } else { -            __pyx_t_26 = __pyx_t_9; +            __pyx_t_27 = __pyx_t_14;            } -          __pyx_t_9 = __pyx_t_26; +          __pyx_t_14 = __pyx_t_27;          } else { -          __pyx_t_9 = __pyx_t_21; +          __pyx_t_14 = __pyx_t_9;          } -        if (__pyx_t_9) { +        if (__pyx_t_14) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1170 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1170   *                         num_subpatterns = num_subpatterns + 1   *                     if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:   *                         xcat = sym_setindex(self.category, arity+1)             # <<<<<<<<<<<<<< @@ -50454,120 +51138,121 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_cur_scope->__pyx_v_xcat = __pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, (__pyx_cur_scope->__pyx_v_arity + 1)); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1171 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1171   *                     if len(phrase)+1 < self.max_length and arity < self.max_nonterminals and num_subpatterns < self.max_chunks:   *                         xcat = sym_setindex(self.category, arity+1)   *                         xnode = node.children[xcat]             # <<<<<<<<<<<<<<   *                         # I put spanlen=1 below   *                         key = tuple([self.min_gap_size, i, 1, pathlen])   */ -          __pyx_t_8 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_8, __pyx_cur_scope->__pyx_v_xcat, sizeof(int), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_15); -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_node, __pyx_n_s__children); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_16 = __Pyx_GetItemInt(__pyx_t_18, __pyx_cur_scope->__pyx_v_xcat, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_16) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_16); +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_xnode);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_xnode); -          __Pyx_GIVEREF(__pyx_t_15); -          __pyx_cur_scope->__pyx_v_xnode = __pyx_t_15; -          __pyx_t_15 = 0; +          __Pyx_GIVEREF(__pyx_t_16); +          __pyx_cur_scope->__pyx_v_xnode = __pyx_t_16; +          __pyx_t_16 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1173 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1173   *                         xnode = node.children[xcat]   *                         # I put spanlen=1 below   *                         key = tuple([self.min_gap_size, i, 1, pathlen])             # <<<<<<<<<<<<<<   *                         frontier_nodes = [] - *                         if (key in nodes_isteps_away_buffer): + *                         if key in nodes_isteps_away_buffer:   */ -          __pyx_t_15 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_15); -          __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); +          __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_16); +          __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_15); -          __Pyx_GIVEREF(__pyx_t_15); -          PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_8); -          __Pyx_GIVEREF(__pyx_t_8); +          PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_16); +          __Pyx_GIVEREF(__pyx_t_16); +          PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_18); +          __Pyx_GIVEREF(__pyx_t_18);            __Pyx_INCREF(__pyx_int_1);            PyList_SET_ITEM(__pyx_t_10, 2, __pyx_int_1);            __Pyx_GIVEREF(__pyx_int_1);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen);            PyList_SET_ITEM(__pyx_t_10, 3, __pyx_cur_scope->__pyx_v_pathlen);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen); -          __pyx_t_15 = 0; -          __pyx_t_8 = 0; -          __pyx_t_8 = ((PyObject *)PyList_AsTuple(__pyx_t_10)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(((PyObject *)__pyx_t_8)); +          __pyx_t_16 = 0; +          __pyx_t_18 = 0; +          __pyx_t_18 = ((PyObject *)PyList_AsTuple(((PyObject*)__pyx_t_10))); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(((PyObject *)__pyx_t_18));            __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_key));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_key)); -          __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); -          __pyx_cur_scope->__pyx_v_key = __pyx_t_8; -          __pyx_t_8 = 0; +          __Pyx_GIVEREF(((PyObject *)__pyx_t_18)); +          __pyx_cur_scope->__pyx_v_key = ((PyObject*)__pyx_t_18); +          __pyx_t_18 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1174 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1174   *                         # I put spanlen=1 below   *                         key = tuple([self.min_gap_size, i, 1, pathlen])   *                         frontier_nodes = []             # <<<<<<<<<<<<<< - *                         if (key in nodes_isteps_away_buffer): + *                         if key in nodes_isteps_away_buffer:   *                             frontier_nodes = nodes_isteps_away_buffer[key]   */ -          __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); +          __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18);            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_frontier_nodes); -          __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); -          __pyx_cur_scope->__pyx_v_frontier_nodes = ((PyObject *)__pyx_t_8); -          __pyx_t_8 = 0; +          __Pyx_GIVEREF(((PyObject *)__pyx_t_18)); +          __pyx_cur_scope->__pyx_v_frontier_nodes = ((PyObject *)__pyx_t_18); +          __pyx_t_18 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1175 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1175   *                         key = tuple([self.min_gap_size, i, 1, pathlen])   *                         frontier_nodes = [] - *                         if (key in nodes_isteps_away_buffer):             # <<<<<<<<<<<<<< + *                         if key in nodes_isteps_away_buffer:             # <<<<<<<<<<<<<<   *                             frontier_nodes = nodes_isteps_away_buffer[key]   *                         else:   */ -          __pyx_t_9 = ((PyDict_Contains(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key)))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_14 = (__Pyx_PyDict_Contains(((PyObject *)__pyx_cur_scope->__pyx_v_key), ((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = (__pyx_t_14 != 0);            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1176 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1176   *                         frontier_nodes = [] - *                         if (key in nodes_isteps_away_buffer): + *                         if key in nodes_isteps_away_buffer:   *                             frontier_nodes = nodes_isteps_away_buffer[key]             # <<<<<<<<<<<<<<   *                         else:   *                             frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)   */ -            __pyx_t_8 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key)); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_8); +            __pyx_t_18 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key)); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_frontier_nodes); -            __Pyx_GIVEREF(__pyx_t_8); -            __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_8; -            __pyx_t_8 = 0; -            goto __pyx_L71; +            __Pyx_GIVEREF(__pyx_t_18); +            __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_18; +            __pyx_t_18 = 0; +            goto __pyx_L67;            }            /*else*/ { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1178 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1178   *                             frontier_nodes = nodes_isteps_away_buffer[key]   *                         else:   *                             frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)             # <<<<<<<<<<<<<<   *                             nodes_isteps_away_buffer[key] = frontier_nodes   *    */ -            __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_123); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_8); +            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_128); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->min_gap_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_15 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_15); +            __pyx_t_16 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_16);              __pyx_t_11 = PyTuple_New(7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_11);              PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10); -            PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_15); -            __Pyx_GIVEREF(__pyx_t_15); +            PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_16); +            __Pyx_GIVEREF(__pyx_t_16);              __Pyx_INCREF(__pyx_int_1);              PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_int_1);              __Pyx_GIVEREF(__pyx_int_1); @@ -50584,52 +51269,60 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              PyTuple_SET_ITEM(__pyx_t_11, 6, ((PyObject *)__pyx_cur_scope->__pyx_v_reachable_buffer));              __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_reachable_buffer));              __pyx_t_10 = 0; -            __pyx_t_15 = 0; -            __pyx_t_15 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_15); -            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +            __pyx_t_16 = 0; +            __pyx_t_16 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_16); +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_frontier_nodes);              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_frontier_nodes); -            __Pyx_GIVEREF(__pyx_t_15); -            __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_15; -            __pyx_t_15 = 0; +            __Pyx_GIVEREF(__pyx_t_16); +            __pyx_cur_scope->__pyx_v_frontier_nodes = __pyx_t_16; +            __pyx_t_16 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1179 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1179   *                         else:   *                             frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)   *                             nodes_isteps_away_buffer[key] = frontier_nodes             # <<<<<<<<<<<<<<   *  - *                         for (i, alt, pathlen) in frontier_nodes: + *                         for i, alt, pathlen in frontier_nodes:   */              if (PyDict_SetItem(((PyObject *)__pyx_cur_scope->__pyx_v_nodes_isteps_away_buffer), ((PyObject *)__pyx_cur_scope->__pyx_v_key), __pyx_cur_scope->__pyx_v_frontier_nodes) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            } -          __pyx_L71:; +          __pyx_L67:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1181 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1181   *                             nodes_isteps_away_buffer[key] = frontier_nodes   *  - *                         for (i, alt, pathlen) in frontier_nodes:             # <<<<<<<<<<<<<< + *                         for i, alt, pathlen in frontier_nodes:             # <<<<<<<<<<<<<<   *                             new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))   *             frontier = new_frontier   */            if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_frontier_nodes) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_frontier_nodes)) { -            __pyx_t_15 = __pyx_cur_scope->__pyx_v_frontier_nodes; __Pyx_INCREF(__pyx_t_15); __pyx_t_6 = 0; +            __pyx_t_16 = __pyx_cur_scope->__pyx_v_frontier_nodes; __Pyx_INCREF(__pyx_t_16); __pyx_t_23 = 0;              __pyx_t_22 = NULL;            } else { -            __pyx_t_6 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_frontier_nodes); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_15); -            __pyx_t_22 = Py_TYPE(__pyx_t_15)->tp_iternext; +            __pyx_t_23 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_frontier_nodes); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_16); +            __pyx_t_22 = Py_TYPE(__pyx_t_16)->tp_iternext;            }            for (;;) { -            if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_15)) { -              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_15)) break; -              __pyx_t_11 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_6); __Pyx_INCREF(__pyx_t_11); __pyx_t_6++; -            } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_15)) { -              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_15)) break; -              __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_6); __Pyx_INCREF(__pyx_t_11); __pyx_t_6++; +            if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_16)) { +              if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_16)) break; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_11 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_23); __Pyx_INCREF(__pyx_t_11); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #else +              __pyx_t_11 = PySequence_ITEM(__pyx_t_16, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #endif +            } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_16)) { +              if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_16)) break; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_23); __Pyx_INCREF(__pyx_t_11); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #else +              __pyx_t_11 = PySequence_ITEM(__pyx_t_16, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #endif              } else { -              __pyx_t_11 = __pyx_t_22(__pyx_t_15); +              __pyx_t_11 = __pyx_t_22(__pyx_t_16);                if (unlikely(!__pyx_t_11)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -50641,138 +51334,149 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene              }              if ((likely(PyTuple_CheckExact(__pyx_t_11))) || (PyList_CheckExact(__pyx_t_11))) {                PyObject* sequence = __pyx_t_11; +              #if CYTHON_COMPILING_IN_CPYTHON +              Py_ssize_t size = Py_SIZE(sequence); +              #else +              Py_ssize_t size = PySequence_Size(sequence); +              #endif +              if (unlikely(size != 3)) { +                if (size > 3) __Pyx_RaiseTooManyValuesError(3); +                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              } +              #if CYTHON_COMPILING_IN_CPYTHON                if (likely(PyTuple_CheckExact(sequence))) { -                if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -                  if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -                  else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                } -                __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);  +                __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0);                   __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1);  -                __pyx_t_17 = PyTuple_GET_ITEM(sequence, 2);  +                __pyx_t_12 = PyTuple_GET_ITEM(sequence, 2);                 } else { -                if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -                  if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -                  else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                } -                __pyx_t_8 = PyList_GET_ITEM(sequence, 0);  +                __pyx_t_18 = PyList_GET_ITEM(sequence, 0);                   __pyx_t_10 = PyList_GET_ITEM(sequence, 1);  -                __pyx_t_17 = PyList_GET_ITEM(sequence, 2);  +                __pyx_t_12 = PyList_GET_ITEM(sequence, 2);                 } -              __Pyx_INCREF(__pyx_t_8); +              __Pyx_INCREF(__pyx_t_18);                __Pyx_INCREF(__pyx_t_10); -              __Pyx_INCREF(__pyx_t_17); +              __Pyx_INCREF(__pyx_t_12); +              #else +              __pyx_t_18 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_18); +              __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_10); +              __pyx_t_12 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_12); +              #endif                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -            } else { +            } else +            {                Py_ssize_t index = -1;                __pyx_t_3 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_3);                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -              __pyx_t_19 = Py_TYPE(__pyx_t_3)->tp_iternext; -              index = 0; __pyx_t_8 = __pyx_t_19(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L74_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_8); -              index = 1; __pyx_t_10 = __pyx_t_19(__pyx_t_3); if (unlikely(!__pyx_t_10)) goto __pyx_L74_unpacking_failed; +              __pyx_t_20 = Py_TYPE(__pyx_t_3)->tp_iternext; +              index = 0; __pyx_t_18 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_18)) goto __pyx_L70_unpacking_failed; +              __Pyx_GOTREF(__pyx_t_18); +              index = 1; __pyx_t_10 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_10)) goto __pyx_L70_unpacking_failed;                __Pyx_GOTREF(__pyx_t_10); -              index = 2; __pyx_t_17 = __pyx_t_19(__pyx_t_3); if (unlikely(!__pyx_t_17)) goto __pyx_L74_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_17); -              if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              index = 2; __pyx_t_12 = __pyx_t_20(__pyx_t_3); if (unlikely(!__pyx_t_12)) goto __pyx_L70_unpacking_failed; +              __Pyx_GOTREF(__pyx_t_12); +              if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_20 = NULL;                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -              goto __pyx_L75_unpacking_done; -              __pyx_L74_unpacking_failed:; +              goto __pyx_L71_unpacking_done; +              __pyx_L70_unpacking_failed:;                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -              if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -              if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +              __pyx_t_20 = NULL; +              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);                {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __pyx_L75_unpacking_done:; +              __pyx_L71_unpacking_done:;              } -            __pyx_t_20 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +            __pyx_t_21 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_21 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;              __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -            __pyx_cur_scope->__pyx_v_i = __pyx_t_20; +            __pyx_cur_scope->__pyx_v_i = __pyx_t_21;              __pyx_cur_scope->__pyx_v_alt = __pyx_t_7;              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pathlen);              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_pathlen); -            __Pyx_GIVEREF(__pyx_t_17); -            __pyx_cur_scope->__pyx_v_pathlen = __pyx_t_17; -            __pyx_t_17 = 0; +            __Pyx_GIVEREF(__pyx_t_12); +            __pyx_cur_scope->__pyx_v_pathlen = __pyx_t_12; +            __pyx_t_12 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1182 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1182   *  - *                         for (i, alt, pathlen) in frontier_nodes: + *                         for i, alt, pathlen in frontier_nodes:   *                             new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))             # <<<<<<<<<<<<<<   *             frontier = new_frontier   *    */              __pyx_t_11 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_11); -            __pyx_t_17 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_17); +            __pyx_t_12 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_12);              __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_8); -            PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); +            __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18); +            PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10);              __pyx_t_10 = 0; -            __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_input_match, ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = PyNumber_Add(__pyx_cur_scope->__pyx_v_input_match, ((PyObject *)__pyx_t_18)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -            __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_8); +            __Pyx_DECREF(((PyObject *)__pyx_t_18)); __pyx_t_18 = 0; +            __pyx_t_18 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_alt); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_18);              __pyx_t_3 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_xcat); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3); -            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_12); -            PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); +            __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_8); +            PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);              __Pyx_GIVEREF(__pyx_t_3);              __pyx_t_3 = 0; -            __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_phrase, ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_3); -            __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; -            __pyx_t_12 = PyTuple_New(8); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_12); -            PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); +            __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +            __pyx_t_8 = PyTuple_New(8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_8); +            PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);              __Pyx_GIVEREF(__pyx_t_11); -            PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_17); -            __Pyx_GIVEREF(__pyx_t_17); -            PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_10); +            PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_12); +            __Pyx_GIVEREF(__pyx_t_12); +            PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10); -            PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_8); -            __Pyx_GIVEREF(__pyx_t_8); +            PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_18); +            __Pyx_GIVEREF(__pyx_t_18);              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_pathlen); -            PyTuple_SET_ITEM(__pyx_t_12, 4, __pyx_cur_scope->__pyx_v_pathlen); +            PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_cur_scope->__pyx_v_pathlen);              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pathlen);              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xnode); -            PyTuple_SET_ITEM(__pyx_t_12, 5, __pyx_cur_scope->__pyx_v_xnode); +            PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_cur_scope->__pyx_v_xnode);              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xnode); -            PyTuple_SET_ITEM(__pyx_t_12, 6, __pyx_t_3); +            PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_t_3);              __Pyx_GIVEREF(__pyx_t_3);              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_shadow_path); -            PyTuple_SET_ITEM(__pyx_t_12, 7, __pyx_cur_scope->__pyx_v_is_shadow_path); +            PyTuple_SET_ITEM(__pyx_t_8, 7, __pyx_cur_scope->__pyx_v_is_shadow_path);              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_shadow_path);              __pyx_t_11 = 0; -            __pyx_t_17 = 0; +            __pyx_t_12 = 0;              __pyx_t_10 = 0; -            __pyx_t_8 = 0; +            __pyx_t_18 = 0;              __pyx_t_3 = 0; -            __pyx_t_13 = PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_12)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; +            __pyx_t_13 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_new_frontier, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;            } -          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -          goto __pyx_L70; +          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +          goto __pyx_L66;          } -        __pyx_L70:; -        goto __pyx_L66; +        __pyx_L66:; +        goto __pyx_L62;        } -      __pyx_L66:; +      __pyx_L62:;        __pyx_L19_continue:;      } -    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1183 - *                         for (i, alt, pathlen) in frontier_nodes: +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1183 + *                         for i, alt, pathlen in frontier_nodes:   *                             new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))   *             frontier = new_frontier             # <<<<<<<<<<<<<<   *  @@ -50785,133 +51489,153 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene      __pyx_cur_scope->__pyx_v_frontier = __pyx_cur_scope->__pyx_v_new_frontier;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1186 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1186   *    *         # Online rule extraction and scoring   *         if self.online:             # <<<<<<<<<<<<<<   *             f_syms = tuple(word[0][0] for word in fwords) - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   */ -  if (__pyx_cur_scope->__pyx_v_self->online) { +  __pyx_t_9 = (__pyx_cur_scope->__pyx_v_self->online != 0); +  if (__pyx_t_9) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1187 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1187   *         # Online rule extraction and scoring   *         if self.online:   *             f_syms = tuple(word[0][0] for word in fwords)             # <<<<<<<<<<<<<< - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   *                 spanlen = (lex_j - lex_i) + 1   */ -    __pyx_t_14 = __pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_15 = __pyx_pf_3_sa_23HieroCachingRuleFactory_5input_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_15); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); -    __Pyx_GIVEREF(__pyx_t_14); -    __pyx_t_14 = 0; -    __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -    __Pyx_GIVEREF(__pyx_t_14); -    __pyx_cur_scope->__pyx_v_f_syms = ((PyObject*)__pyx_t_14); -    __pyx_t_14 = 0; +    __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_16); +    PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); +    __Pyx_GIVEREF(__pyx_t_15); +    __pyx_t_15 = 0; +    __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_15); +    __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; +    __Pyx_GIVEREF(__pyx_t_15); +    __pyx_cur_scope->__pyx_v_f_syms = ((PyObject*)__pyx_t_15); +    __pyx_t_15 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1188 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1188   *         if self.online:   *             f_syms = tuple(word[0][0] for word in fwords) - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms):             # <<<<<<<<<<<<<< + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):             # <<<<<<<<<<<<<<   *                 spanlen = (lex_j - lex_i) + 1   *                 if not sym_isvar(f[0]):   */ -    __pyx_t_14 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_15); +    __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_16);      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_f_syms)); -    PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_f_syms)); +    PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_f_syms));      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_f_syms)); -    __pyx_t_12 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_12); -    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -    if (PyList_CheckExact(__pyx_t_12) || PyTuple_CheckExact(__pyx_t_12)) { -      __pyx_t_15 = __pyx_t_12; __Pyx_INCREF(__pyx_t_15); __pyx_t_2 = 0; +    __pyx_t_8 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0; +    if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) { +      __pyx_t_16 = __pyx_t_8; __Pyx_INCREF(__pyx_t_16); __pyx_t_2 = 0;        __pyx_t_22 = NULL;      } else { -      __pyx_t_2 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_22 = Py_TYPE(__pyx_t_15)->tp_iternext; +      __pyx_t_2 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_16); +      __pyx_t_22 = Py_TYPE(__pyx_t_16)->tp_iternext;      } -    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      for (;;) { -      if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_15)) { -        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_15)) break; -        __pyx_t_12 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; -      } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_15)) { -        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_15)) break; -        __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; +      if (!__pyx_t_22 && PyList_CheckExact(__pyx_t_16)) { +        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_16)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_8 = PySequence_ITEM(__pyx_t_16, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif +      } else if (!__pyx_t_22 && PyTuple_CheckExact(__pyx_t_16)) { +        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_16)) break; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_8 = PySequence_ITEM(__pyx_t_16, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else { -        __pyx_t_12 = __pyx_t_22(__pyx_t_15); -        if (unlikely(!__pyx_t_12)) { +        __pyx_t_8 = __pyx_t_22(__pyx_t_16); +        if (unlikely(!__pyx_t_8)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } -        __Pyx_GOTREF(__pyx_t_12); +        __Pyx_GOTREF(__pyx_t_8);        } -      if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) { -        PyObject* sequence = __pyx_t_12; +      if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { +        PyObject* sequence = __pyx_t_8; +        #if CYTHON_COMPILING_IN_CPYTHON +        Py_ssize_t size = Py_SIZE(sequence); +        #else +        Py_ssize_t size = PySequence_Size(sequence); +        #endif +        if (unlikely(size != 3)) { +          if (size > 3) __Pyx_RaiseTooManyValuesError(3); +          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        #if CYTHON_COMPILING_IN_CPYTHON          if (likely(PyTuple_CheckExact(sequence))) { -          if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -            if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -            else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -            {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          } -          __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);  +          __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0);             __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);  -          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);  +          __pyx_t_18 = PyTuple_GET_ITEM(sequence, 2);           } else { -          if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -            if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -            else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -            {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          } -          __pyx_t_14 = PyList_GET_ITEM(sequence, 0);  +          __pyx_t_15 = PyList_GET_ITEM(sequence, 0);             __pyx_t_3 = PyList_GET_ITEM(sequence, 1);  -          __pyx_t_8 = PyList_GET_ITEM(sequence, 2);  +          __pyx_t_18 = PyList_GET_ITEM(sequence, 2);           } -        __Pyx_INCREF(__pyx_t_14); +        __Pyx_INCREF(__pyx_t_15);          __Pyx_INCREF(__pyx_t_3); -        __Pyx_INCREF(__pyx_t_8); -        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -      } else { +        __Pyx_INCREF(__pyx_t_18); +        #else +        __pyx_t_15 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_15); +        __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3); +        __pyx_t_18 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18); +        #endif +        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      } else +      {          Py_ssize_t index = -1; -        __pyx_t_10 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10); -        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -        __pyx_t_19 = Py_TYPE(__pyx_t_10)->tp_iternext; -        index = 0; __pyx_t_14 = __pyx_t_19(__pyx_t_10); if (unlikely(!__pyx_t_14)) goto __pyx_L79_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_14); -        index = 1; __pyx_t_3 = __pyx_t_19(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L79_unpacking_failed; +        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +        __pyx_t_20 = Py_TYPE(__pyx_t_10)->tp_iternext; +        index = 0; __pyx_t_15 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_15)) goto __pyx_L75_unpacking_failed; +        __Pyx_GOTREF(__pyx_t_15); +        index = 1; __pyx_t_3 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L75_unpacking_failed;          __Pyx_GOTREF(__pyx_t_3); -        index = 2; __pyx_t_8 = __pyx_t_19(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L79_unpacking_failed; -        __Pyx_GOTREF(__pyx_t_8); -        if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        index = 2; __pyx_t_18 = __pyx_t_20(__pyx_t_10); if (unlikely(!__pyx_t_18)) goto __pyx_L75_unpacking_failed; +        __Pyx_GOTREF(__pyx_t_18); +        if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_10), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_20 = NULL;          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        goto __pyx_L80_unpacking_done; -        __pyx_L79_unpacking_failed:; +        goto __pyx_L76_unpacking_done; +        __pyx_L75_unpacking_failed:;          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -        if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +        __pyx_t_20 = NULL; +        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_L80_unpacking_done:; +        __pyx_L76_unpacking_done:;        }        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_f);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_f); -      __Pyx_GIVEREF(__pyx_t_14); -      __pyx_cur_scope->__pyx_v_f = __pyx_t_14; -      __pyx_t_14 = 0; +      __Pyx_GIVEREF(__pyx_t_15); +      __pyx_cur_scope->__pyx_v_f = __pyx_t_15; +      __pyx_t_15 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lex_i);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_lex_i);        __Pyx_GIVEREF(__pyx_t_3); @@ -50919,131 +51643,139 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene        __pyx_t_3 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_lex_j);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_lex_j); -      __Pyx_GIVEREF(__pyx_t_8); -      __pyx_cur_scope->__pyx_v_lex_j = __pyx_t_8; -      __pyx_t_8 = 0; +      __Pyx_GIVEREF(__pyx_t_18); +      __pyx_cur_scope->__pyx_v_lex_j = __pyx_t_18; +      __pyx_t_18 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1189 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1189   *             f_syms = tuple(word[0][0] for word in fwords) - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   *                 spanlen = (lex_j - lex_i) + 1             # <<<<<<<<<<<<<<   *                 if not sym_isvar(f[0]):   *                     spanlen += 1   */ -      __pyx_t_12 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_lex_j, __pyx_cur_scope->__pyx_v_lex_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_12); -      __pyx_t_8 = PyNumber_Add(__pyx_t_12, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_lex_j, __pyx_cur_scope->__pyx_v_lex_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +      __pyx_t_18 = PyNumber_Add(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_spanlen);        __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_spanlen); -      __Pyx_GIVEREF(__pyx_t_8); -      __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_8; -      __pyx_t_8 = 0; +      __Pyx_GIVEREF(__pyx_t_18); +      __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18; +      __pyx_t_18 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1190 - *             for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1190 + *             for f, lex_i, lex_j in self.get_f_phrases(f_syms):   *                 spanlen = (lex_j - lex_i) + 1   *                 if not sym_isvar(f[0]):             # <<<<<<<<<<<<<<   *                     spanlen += 1   *                 if not sym_isvar(f[1]):   */ -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_9 = (!__pyx_f_3_sa_sym_isvar(__pyx_t_7)); +      __pyx_t_18 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18); +      __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      __pyx_t_9 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_7) != 0)) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1191 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1191   *                 spanlen = (lex_j - lex_i) + 1   *                 if not sym_isvar(f[0]):   *                     spanlen += 1             # <<<<<<<<<<<<<<   *                 if not sym_isvar(f[1]):   *                     spanlen += 1   */ -        __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18);          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_spanlen);          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_spanlen); -        __Pyx_GIVEREF(__pyx_t_8); -        __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_8; -        __pyx_t_8 = 0; -        goto __pyx_L81; +        __Pyx_GIVEREF(__pyx_t_18); +        __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18; +        __pyx_t_18 = 0; +        goto __pyx_L77;        } -      __pyx_L81:; +      __pyx_L77:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1192 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1192   *                 if not sym_isvar(f[0]):   *                     spanlen += 1   *                 if not sym_isvar(f[1]):             # <<<<<<<<<<<<<<   *                     spanlen += 1   *                 for e in self.phrases_fe.get(f, ()):   */ -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_8); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_9 = (!__pyx_f_3_sa_sym_isvar(__pyx_t_7)); +      __pyx_t_18 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_f, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_18) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18); +      __pyx_t_7 = __Pyx_PyInt_AsInt(__pyx_t_18); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      __pyx_t_9 = ((!(__pyx_f_3_sa_sym_isvar(__pyx_t_7) != 0)) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1193 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1193   *                     spanlen += 1   *                 if not sym_isvar(f[1]):   *                     spanlen += 1             # <<<<<<<<<<<<<<   *                 for e in self.phrases_fe.get(f, ()):   *                     if (f, e) not in seen_phrases:   */ -        __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_18 = PyNumber_InPlaceAdd(__pyx_cur_scope->__pyx_v_spanlen, __pyx_int_1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_18);          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_spanlen);          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_spanlen); -        __Pyx_GIVEREF(__pyx_t_8); -        __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_8; -        __pyx_t_8 = 0; -        goto __pyx_L82; +        __Pyx_GIVEREF(__pyx_t_18); +        __pyx_cur_scope->__pyx_v_spanlen = __pyx_t_18; +        __pyx_t_18 = 0; +        goto __pyx_L78;        } -      __pyx_L82:; +      __pyx_L78:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1194 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1194   *                 if not sym_isvar(f[1]):   *                     spanlen += 1   *                 for e in self.phrases_fe.get(f, ()):             # <<<<<<<<<<<<<<   *                     if (f, e) not in seen_phrases:   *                         # Don't add multiple instances of the same phrase here   */ -      __pyx_t_8 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_18); +      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_12);        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f); -      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_cur_scope->__pyx_v_f); +      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_f);        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);        __Pyx_INCREF(((PyObject *)__pyx_empty_tuple)); -      PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_empty_tuple)); +      PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_empty_tuple));        __Pyx_GIVEREF(((PyObject *)__pyx_empty_tuple)); -      __pyx_t_3 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; +      __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;        if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) { -        __pyx_t_12 = __pyx_t_3; __Pyx_INCREF(__pyx_t_12); __pyx_t_6 = 0; -        __pyx_t_24 = NULL; +        __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_23 = 0; +        __pyx_t_29 = NULL;        } else { -        __pyx_t_6 = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_12); -        __pyx_t_24 = Py_TYPE(__pyx_t_12)->tp_iternext; +        __pyx_t_23 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_29 = Py_TYPE(__pyx_t_8)->tp_iternext;        }        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        for (;;) { -        if (!__pyx_t_24 && PyList_CheckExact(__pyx_t_12)) { -          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_12)) break; -          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_12, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; -        } else if (!__pyx_t_24 && PyTuple_CheckExact(__pyx_t_12)) { -          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_12)) break; -          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_12, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; +        if (!__pyx_t_29 && PyList_CheckExact(__pyx_t_8)) { +          if (__pyx_t_23 >= PyList_GET_SIZE(__pyx_t_8)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_23); __Pyx_INCREF(__pyx_t_3); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif +        } else if (!__pyx_t_29 && PyTuple_CheckExact(__pyx_t_8)) { +          if (__pyx_t_23 >= PyTuple_GET_SIZE(__pyx_t_8)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_23); __Pyx_INCREF(__pyx_t_3); __pyx_t_23++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_23); __pyx_t_23++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else { -          __pyx_t_3 = __pyx_t_24(__pyx_t_12); +          __pyx_t_3 = __pyx_t_29(__pyx_t_8);            if (unlikely(!__pyx_t_3)) {              if (PyErr_Occurred()) {                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); @@ -51059,7 +51791,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __pyx_cur_scope->__pyx_v_e = __pyx_t_3;          __pyx_t_3 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1195 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1195   *                     spanlen += 1   *                 for e in self.phrases_fe.get(f, ()):   *                     if (f, e) not in seen_phrases:             # <<<<<<<<<<<<<< @@ -51074,11 +51806,12 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);          PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_e);          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e); -        __pyx_t_9 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_cur_scope->__pyx_v_seen_phrases), ((PyObject *)__pyx_t_3)))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_9 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_t_3), ((PyObject *)__pyx_cur_scope->__pyx_v_seen_phrases), Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -        if (__pyx_t_9) { +        __pyx_t_14 = (__pyx_t_9 != 0); +        if (__pyx_t_14) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1197 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1197   *                     if (f, e) not in seen_phrases:   *                         # Don't add multiple instances of the same phrase here   *                         seen_phrases.add((f, e))             # <<<<<<<<<<<<<< @@ -51096,110 +51829,110 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene            __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_seen_phrases, ((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1198 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1198   *                         # Don't add multiple instances of the same phrase here   *                         seen_phrases.add((f, e))   *                         scores = self.scorer.score(FeatureContext(             # <<<<<<<<<<<<<<   *                                 f, e, 0, 0, 0,   *                                 spanlen, None, None,   */ -          __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__FeatureContext); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_3); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1203 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1203   *                                 fwords, self.fda, self.eda,   *                                 meta,   *                                 self.online_ctx_lookup(f, e)))             # <<<<<<<<<<<<<<   *                         alignment = self.phrases_al[f][e]   *                         yield Rule(self.category, f, e, scores, alignment)   */ -          __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_8); -          __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_14); +          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__online_ctx_lookup); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_18); +          __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_15);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f); -          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_cur_scope->__pyx_v_f); +          PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_f);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e); -          PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_cur_scope->__pyx_v_e); +          PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_e);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e); -          __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyObject_Call(__pyx_t_18, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; -          __pyx_t_14 = PyTuple_New(13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_14); +          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +          __pyx_t_15 = PyTuple_New(13); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_15);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f); -          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_cur_scope->__pyx_v_f); +          PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_f);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e); -          PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_cur_scope->__pyx_v_e); +          PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_e);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);            __Pyx_INCREF(__pyx_int_0); -          PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_int_0); +          PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_int_0);            __Pyx_GIVEREF(__pyx_int_0);            __Pyx_INCREF(__pyx_int_0); -          PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_int_0); +          PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_int_0);            __Pyx_GIVEREF(__pyx_int_0);            __Pyx_INCREF(__pyx_int_0); -          PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_int_0); +          PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_int_0);            __Pyx_GIVEREF(__pyx_int_0);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_spanlen); -          PyTuple_SET_ITEM(__pyx_t_14, 5, __pyx_cur_scope->__pyx_v_spanlen); +          PyTuple_SET_ITEM(__pyx_t_15, 5, __pyx_cur_scope->__pyx_v_spanlen);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_spanlen);            __Pyx_INCREF(Py_None); -          PyTuple_SET_ITEM(__pyx_t_14, 6, Py_None); +          PyTuple_SET_ITEM(__pyx_t_15, 6, Py_None);            __Pyx_GIVEREF(Py_None);            __Pyx_INCREF(Py_None); -          PyTuple_SET_ITEM(__pyx_t_14, 7, Py_None); +          PyTuple_SET_ITEM(__pyx_t_15, 7, Py_None);            __Pyx_GIVEREF(Py_None);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fwords); -          PyTuple_SET_ITEM(__pyx_t_14, 8, __pyx_cur_scope->__pyx_v_fwords); +          PyTuple_SET_ITEM(__pyx_t_15, 8, __pyx_cur_scope->__pyx_v_fwords);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fwords);            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda)); -          PyTuple_SET_ITEM(__pyx_t_14, 9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fda)); +          PyTuple_SET_ITEM(__pyx_t_15, 9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));            __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fda));            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda)); -          PyTuple_SET_ITEM(__pyx_t_14, 10, ((PyObject *)__pyx_cur_scope->__pyx_v_self->eda)); +          PyTuple_SET_ITEM(__pyx_t_15, 10, ((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));            __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->eda));            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_meta); -          PyTuple_SET_ITEM(__pyx_t_14, 11, __pyx_cur_scope->__pyx_v_meta); +          PyTuple_SET_ITEM(__pyx_t_15, 11, __pyx_cur_scope->__pyx_v_meta);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_meta); -          PyTuple_SET_ITEM(__pyx_t_14, 12, __pyx_t_10); +          PyTuple_SET_ITEM(__pyx_t_15, 12, __pyx_t_10);            __Pyx_GIVEREF(__pyx_t_10);            __pyx_t_10 = 0; -          __pyx_t_10 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; -          __pyx_t_14 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_10)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_14); +          __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +          __pyx_t_15 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_Scorer *)__pyx_cur_scope->__pyx_v_self->scorer->__pyx_vtab)->score(__pyx_cur_scope->__pyx_v_self->scorer, __pyx_t_10)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_15);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));            __Pyx_XDECREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores)); -          __Pyx_GIVEREF(__pyx_t_14); -          __pyx_cur_scope->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_14); -          __pyx_t_14 = 0; +          __Pyx_GIVEREF(__pyx_t_15); +          __pyx_cur_scope->__pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_15); +          __pyx_t_15 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1204 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1204   *                                 meta,   *                                 self.online_ctx_lookup(f, e)))   *                         alignment = self.phrases_al[f][e]             # <<<<<<<<<<<<<<   *                         yield Rule(self.category, f, e, scores, alignment)   *    */ -          __pyx_t_14 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_14); -          __pyx_t_10 = PyObject_GetItem(__pyx_t_14, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_15 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_cur_scope->__pyx_v_f); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_15); +          __pyx_t_10 = PyObject_GetItem(__pyx_t_15, __pyx_cur_scope->__pyx_v_e); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_alignment);            __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_alignment);            __Pyx_GIVEREF(__pyx_t_10);            __pyx_cur_scope->__pyx_v_alignment = __pyx_t_10;            __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1205 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1205   *                                 self.online_ctx_lookup(f, e)))   *                         alignment = self.phrases_al[f][e]   *                         yield Rule(self.category, f, e, scores, alignment)             # <<<<<<<<<<<<<< @@ -51208,182 +51941,182 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene   */            __pyx_t_10 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->category); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_14 = PyTuple_New(5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_14); -          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_10); +          __pyx_t_15 = PyTuple_New(5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_15); +          PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10);            __Pyx_GIVEREF(__pyx_t_10);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f); -          PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_cur_scope->__pyx_v_f); +          PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_cur_scope->__pyx_v_f);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f);            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e); -          PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_cur_scope->__pyx_v_e); +          PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_cur_scope->__pyx_v_e);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores)); -          PyTuple_SET_ITEM(__pyx_t_14, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores)); +          PyTuple_SET_ITEM(__pyx_t_15, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_scores));            __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_scores));            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_alignment); -          PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_cur_scope->__pyx_v_alignment); +          PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_cur_scope->__pyx_v_alignment);            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_alignment);            __pyx_t_10 = 0; -          __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Rule)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; +          __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;            __pyx_r = __pyx_t_10;            __pyx_t_10 = 0;            __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; -          __pyx_cur_scope->__pyx_t_1 = __pyx_t_6; -          __Pyx_XGIVEREF(__pyx_t_12); -          __pyx_cur_scope->__pyx_t_2 = __pyx_t_12; -          __Pyx_XGIVEREF(__pyx_t_15); -          __pyx_cur_scope->__pyx_t_3 = __pyx_t_15; -          __pyx_cur_scope->__pyx_t_5 = __pyx_t_22; -          __pyx_cur_scope->__pyx_t_7 = __pyx_t_24; +          __Pyx_XGIVEREF(__pyx_t_8); +          __pyx_cur_scope->__pyx_t_3 = __pyx_t_8; +          __Pyx_XGIVEREF(__pyx_t_16); +          __pyx_cur_scope->__pyx_t_4 = __pyx_t_16; +          __pyx_cur_scope->__pyx_t_10 = __pyx_t_22; +          __pyx_cur_scope->__pyx_t_1 = __pyx_t_23; +          __pyx_cur_scope->__pyx_t_11 = __pyx_t_29;            __Pyx_XGIVEREF(__pyx_r);            __Pyx_RefNannyFinishContext();            /* return from generator, yielding value */            __pyx_generator->resume_label = 2;            return __pyx_r; -          __pyx_L86_resume_from_yield:; +          __pyx_L82_resume_from_yield:;            __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; -          __pyx_t_6 = __pyx_cur_scope->__pyx_t_1; -          __pyx_t_12 = __pyx_cur_scope->__pyx_t_2; -          __pyx_cur_scope->__pyx_t_2 = 0; -          __Pyx_XGOTREF(__pyx_t_12); -          __pyx_t_15 = __pyx_cur_scope->__pyx_t_3; +          __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;            __pyx_cur_scope->__pyx_t_3 = 0; -          __Pyx_XGOTREF(__pyx_t_15); -          __pyx_t_22 = __pyx_cur_scope->__pyx_t_5; -          __pyx_t_24 = __pyx_cur_scope->__pyx_t_7; +          __Pyx_XGOTREF(__pyx_t_8); +          __pyx_t_16 = __pyx_cur_scope->__pyx_t_4; +          __pyx_cur_scope->__pyx_t_4 = 0; +          __Pyx_XGOTREF(__pyx_t_16); +          __pyx_t_22 = __pyx_cur_scope->__pyx_t_10; +          __pyx_t_23 = __pyx_cur_scope->__pyx_t_1; +          __pyx_t_29 = __pyx_cur_scope->__pyx_t_11;            if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          goto __pyx_L85; +          goto __pyx_L81;          } -        __pyx_L85:; +        __pyx_L81:;        } -      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      } -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -    goto __pyx_L76; +    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +    goto __pyx_L72;    } -  __pyx_L76:; +  __pyx_L72:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1207 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1207   *                         yield Rule(self.category, f, e, scores, alignment)   *    *         stop_time = monitor_cpu()             # <<<<<<<<<<<<<<   *         logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))   *         gc.collect()   */ -  __pyx_t_15 = __Pyx_GetName(__pyx_m, __pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_15); -  __pyx_t_12 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); -  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -  __Pyx_GIVEREF(__pyx_t_12); -  __pyx_cur_scope->__pyx_v_stop_time = __pyx_t_12; -  __pyx_t_12 = 0; +  __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s__monitor_cpu); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_16); +  __pyx_t_8 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +  __Pyx_GIVEREF(__pyx_t_8); +  __pyx_cur_scope->__pyx_v_stop_time = __pyx_t_8; +  __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1208 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1208   *    *         stop_time = monitor_cpu()   *         logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))             # <<<<<<<<<<<<<<   *         gc.collect()   *         logger.info("    Extract time = %f seconds", self.extract_time)   */ -  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); -  __pyx_t_15 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__info); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_15); -  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -  __pyx_t_12 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_start_time); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); -  __pyx_t_10 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_stop_time, __pyx_t_12); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_16); +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_start_time); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __pyx_t_10 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_stop_time, __pyx_t_8); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_124)); -  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_kp_s_124)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_124)); -  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_10); +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_129)); +  PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_129)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_129)); +  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);    __Pyx_GIVEREF(__pyx_t_10);    __pyx_t_10 = 0; -  __pyx_t_10 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; +  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1209 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1209   *         stop_time = monitor_cpu()   *         logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))   *         gc.collect()             # <<<<<<<<<<<<<<   *         logger.info("    Extract time = %f seconds", self.extract_time)   *         logger.info("    Intersect time = %f seconds", self.intersect_time)   */ -  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__gc); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__gc); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__collect); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); +  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__collect); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __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_Call(__pyx_t_12, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1210 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1210   *         logger.info("Total time for rule lookup, extraction, and scoring = %f seconds", (stop_time - start_time))   *         gc.collect()   *         logger.info("    Extract time = %f seconds", self.extract_time)             # <<<<<<<<<<<<<<   *         logger.info("    Intersect time = %f seconds", self.intersect_time)   *    */ -  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); +  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;    __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->extract_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_15); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_125)); -  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_kp_s_125)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_125)); -  PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_10); +  __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_16); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_130)); +  PyTuple_SET_ITEM(__pyx_t_16, 0, ((PyObject *)__pyx_kp_s_130)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_130)); +  PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_10);    __Pyx_GIVEREF(__pyx_t_10);    __pyx_t_10 = 0; -  __pyx_t_10 = PyObject_Call(__pyx_t_12, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_16), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_16)); __pyx_t_16 = 0;    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1211 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1211   *         gc.collect()   *         logger.info("    Extract time = %f seconds", self.extract_time)   *         logger.info("    Intersect time = %f seconds", self.intersect_time)             # <<<<<<<<<<<<<<   *    *    */ -  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __pyx_t_15 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_15); +  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s__info); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_16);    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;    __pyx_t_10 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->intersect_time); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_12); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_126)); -  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_kp_s_126)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_126)); -  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_10); +  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_8); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_131)); +  PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_kp_s_131)); +  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_131)); +  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);    __Pyx_GIVEREF(__pyx_t_10);    __pyx_t_10 = 0; -  __pyx_t_10 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = PyObject_Call(__pyx_t_16, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_10); -  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; +  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;    PyErr_SetNone(PyExc_StopIteration);    goto __pyx_L0; @@ -51394,20 +52127,21 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_24generator4(__pyx_Gene    __Pyx_XDECREF(__pyx_t_10);    __Pyx_XDECREF(__pyx_t_11);    __Pyx_XDECREF(__pyx_t_12); -  __Pyx_XDECREF(__pyx_t_14);    __Pyx_XDECREF(__pyx_t_15);    __Pyx_XDECREF(__pyx_t_16);    __Pyx_XDECREF(__pyx_t_17);    __Pyx_XDECREF(__pyx_t_18); +  __Pyx_XDECREF(__pyx_t_19);    __Pyx_AddTraceback("input", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1214 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1214   *    *    *     cdef int find_fixpoint(self,             # <<<<<<<<<<<<<< @@ -51437,7 +52171,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("find_fixpoint", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1229 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1229   *         cdef int e_low_prev, e_high_prev, f_low_prev, f_high_prev, new_x, new_low_x, new_high_x   *    *         e_low[0] = e_in_low             # <<<<<<<<<<<<<< @@ -51446,7 +52180,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    (__pyx_v_e_low[0]) = __pyx_v_e_in_low; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1230 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1230   *    *         e_low[0] = e_in_low   *         e_high[0] = e_in_high             # <<<<<<<<<<<<<< @@ -51455,7 +52189,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    (__pyx_v_e_high[0]) = __pyx_v_e_in_high; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1231 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1231   *         e_low[0] = e_in_low   *         e_high[0] = e_in_high   *         self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)             # <<<<<<<<<<<<<< @@ -51467,17 +52201,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1232 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1232   *         e_high[0] = e_in_high   *         self.find_projection(f_low, f_high, f_links_low, f_links_high, e_low, e_high)   *         if e_low[0] == -1:             # <<<<<<<<<<<<<<   *             # low-priority corner case: if phrase w is unaligned,   *             # but we don't require aligned terminals, then returning   */ -  __pyx_t_3 = ((__pyx_v_e_low[0]) == -1); +  __pyx_t_3 = (((__pyx_v_e_low[0]) == -1) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1238 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1238   *             # rule X -> X_1 w X_2 / X_1 X_2.    This is probably   *             # not worth the bother, though.   *             return 0             # <<<<<<<<<<<<<< @@ -51489,33 +52223,33 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      goto __pyx_L3;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1239 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1239   *             # not worth the bother, though.   *             return 0   *         elif e_in_low != -1 and e_low[0] != e_in_low:             # <<<<<<<<<<<<<<   *             if e_in_low - e_low[0] < min_ex_size:   *                 e_low[0] = e_in_low - min_ex_size   */ -  __pyx_t_3 = (__pyx_v_e_in_low != -1); +  __pyx_t_3 = ((__pyx_v_e_in_low != -1) != 0);    if (__pyx_t_3) { -    __pyx_t_4 = ((__pyx_v_e_low[0]) != __pyx_v_e_in_low); +    __pyx_t_4 = (((__pyx_v_e_low[0]) != __pyx_v_e_in_low) != 0);      __pyx_t_5 = __pyx_t_4;    } else {      __pyx_t_5 = __pyx_t_3;    }    if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1240 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1240   *             return 0   *         elif e_in_low != -1 and e_low[0] != e_in_low:   *             if e_in_low - e_low[0] < min_ex_size:             # <<<<<<<<<<<<<<   *                 e_low[0] = e_in_low - min_ex_size   *                 if e_low[0] < 0:   */ -    __pyx_t_5 = ((__pyx_v_e_in_low - (__pyx_v_e_low[0])) < __pyx_v_min_ex_size); +    __pyx_t_5 = (((__pyx_v_e_in_low - (__pyx_v_e_low[0])) < __pyx_v_min_ex_size) != 0);      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1241 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1241   *         elif e_in_low != -1 and e_low[0] != e_in_low:   *             if e_in_low - e_low[0] < min_ex_size:   *                 e_low[0] = e_in_low - min_ex_size             # <<<<<<<<<<<<<< @@ -51524,17 +52258,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */        (__pyx_v_e_low[0]) = (__pyx_v_e_in_low - __pyx_v_min_ex_size); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1242 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1242   *             if e_in_low - e_low[0] < min_ex_size:   *                 e_low[0] = e_in_low - min_ex_size   *                 if e_low[0] < 0:             # <<<<<<<<<<<<<<   *                     return 0   *    */ -      __pyx_t_5 = ((__pyx_v_e_low[0]) < 0); +      __pyx_t_5 = (((__pyx_v_e_low[0]) < 0) != 0);        if (__pyx_t_5) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1243 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1243   *                 e_low[0] = e_in_low - min_ex_size   *                 if e_low[0] < 0:   *                     return 0             # <<<<<<<<<<<<<< @@ -51553,17 +52287,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1245 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1245   *                     return 0   *    *         if e_high[0] - e_low[0] > max_e_len:             # <<<<<<<<<<<<<<   *             return 0   *         elif e_in_high != -1 and e_high[0] != e_in_high:   */ -  __pyx_t_5 = (((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len); +  __pyx_t_5 = ((((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len) != 0);    if (__pyx_t_5) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1246 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1246   *    *         if e_high[0] - e_low[0] > max_e_len:   *             return 0             # <<<<<<<<<<<<<< @@ -51575,33 +52309,33 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      goto __pyx_L6;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1247 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1247   *         if e_high[0] - e_low[0] > max_e_len:   *             return 0   *         elif e_in_high != -1 and e_high[0] != e_in_high:             # <<<<<<<<<<<<<<   *             if e_high[0] - e_in_high < min_ex_size:   *                 e_high[0] = e_in_high + min_ex_size   */ -  __pyx_t_5 = (__pyx_v_e_in_high != -1); +  __pyx_t_5 = ((__pyx_v_e_in_high != -1) != 0);    if (__pyx_t_5) { -    __pyx_t_3 = ((__pyx_v_e_high[0]) != __pyx_v_e_in_high); +    __pyx_t_3 = (((__pyx_v_e_high[0]) != __pyx_v_e_in_high) != 0);      __pyx_t_4 = __pyx_t_3;    } else {      __pyx_t_4 = __pyx_t_5;    }    if (__pyx_t_4) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1248 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1248   *             return 0   *         elif e_in_high != -1 and e_high[0] != e_in_high:   *             if e_high[0] - e_in_high < min_ex_size:             # <<<<<<<<<<<<<<   *                 e_high[0] = e_in_high + min_ex_size   *                 if e_high[0] > e_sent_len:   */ -    __pyx_t_4 = (((__pyx_v_e_high[0]) - __pyx_v_e_in_high) < __pyx_v_min_ex_size); +    __pyx_t_4 = ((((__pyx_v_e_high[0]) - __pyx_v_e_in_high) < __pyx_v_min_ex_size) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1249 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1249   *         elif e_in_high != -1 and e_high[0] != e_in_high:   *             if e_high[0] - e_in_high < min_ex_size:   *                 e_high[0] = e_in_high + min_ex_size             # <<<<<<<<<<<<<< @@ -51610,17 +52344,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */        (__pyx_v_e_high[0]) = (__pyx_v_e_in_high + __pyx_v_min_ex_size); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1250 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1250   *             if e_high[0] - e_in_high < min_ex_size:   *                 e_high[0] = e_in_high + min_ex_size   *                 if e_high[0] > e_sent_len:             # <<<<<<<<<<<<<<   *                     return 0   *    */ -      __pyx_t_4 = ((__pyx_v_e_high[0]) > __pyx_v_e_sent_len); +      __pyx_t_4 = (((__pyx_v_e_high[0]) > __pyx_v_e_sent_len) != 0);        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1251 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1251   *                 e_high[0] = e_in_high + min_ex_size   *                 if e_high[0] > e_sent_len:   *                     return 0             # <<<<<<<<<<<<<< @@ -51639,7 +52373,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    }    __pyx_L6:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1253 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1253   *                     return 0   *    *         f_back_low[0] = -1             # <<<<<<<<<<<<<< @@ -51648,7 +52382,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    (__pyx_v_f_back_low[0]) = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1254 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1254   *    *         f_back_low[0] = -1   *         f_back_high[0] = -1             # <<<<<<<<<<<<<< @@ -51657,7 +52391,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    (__pyx_v_f_back_high[0]) = -1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1255 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1255   *         f_back_low[0] = -1   *         f_back_high[0] = -1   *         f_low_prev = f_low             # <<<<<<<<<<<<<< @@ -51666,7 +52400,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    __pyx_v_f_low_prev = __pyx_v_f_low; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1256 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1256   *         f_back_high[0] = -1   *         f_low_prev = f_low   *         f_high_prev = f_high             # <<<<<<<<<<<<<< @@ -51676,7 +52410,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_f_high); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_v_f_high_prev = __pyx_t_1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1257 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1257   *         f_low_prev = f_low   *         f_high_prev = f_high   *         new_x = 0             # <<<<<<<<<<<<<< @@ -51685,7 +52419,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    __pyx_v_new_x = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1258 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1258   *         f_high_prev = f_high   *         new_x = 0   *         new_low_x = 0             # <<<<<<<<<<<<<< @@ -51694,7 +52428,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    __pyx_v_new_low_x = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1259 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1259   *         new_x = 0   *         new_low_x = 0   *         new_high_x = 0             # <<<<<<<<<<<<<< @@ -51703,7 +52437,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */    __pyx_v_new_high_x = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1261 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1261   *         new_high_x = 0   *    *         while True:             # <<<<<<<<<<<<<< @@ -51713,17 +52447,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    while (1) {      if (!1) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1263 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1263   *         while True:   *    *             if f_back_low[0] == -1:             # <<<<<<<<<<<<<<   *                 self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)   *             else:   */ -    __pyx_t_4 = ((__pyx_v_f_back_low[0]) == -1); +    __pyx_t_4 = (((__pyx_v_f_back_low[0]) == -1) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1264 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1264   *    *             if f_back_low[0] == -1:   *                 self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)             # <<<<<<<<<<<<<< @@ -51737,7 +52471,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1266 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1266   *                 self.find_projection(e_low[0], e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)   *             else:   *                 self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high)             # <<<<<<<<<<<<<< @@ -51748,7 +52482,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1267 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1267   *             else:   *                 self.find_projection(e_low[0], e_low_prev, e_links_low, e_links_high, f_back_low, f_back_high)   *                 self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)             # <<<<<<<<<<<<<< @@ -51761,17 +52495,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L11:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1269 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1269   *                 self.find_projection(e_high_prev, e_high[0], e_links_low, e_links_high, f_back_low, f_back_high)   *    *             if f_back_low[0] > f_low:             # <<<<<<<<<<<<<<   *                 f_back_low[0] = f_low   *    */ -    __pyx_t_4 = ((__pyx_v_f_back_low[0]) > __pyx_v_f_low); +    __pyx_t_4 = (((__pyx_v_f_back_low[0]) > __pyx_v_f_low) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1270 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1270   *    *             if f_back_low[0] > f_low:   *                 f_back_low[0] = f_low             # <<<<<<<<<<<<<< @@ -51783,7 +52517,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L12:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1272 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1272   *                 f_back_low[0] = f_low   *    *             if f_back_high[0] < f_high:             # <<<<<<<<<<<<<< @@ -51792,14 +52526,13 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */      __pyx_t_2 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_high, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); +    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_high, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1273 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1273   *    *             if f_back_high[0] < f_high:   *                 f_back_high[0] = f_high             # <<<<<<<<<<<<<< @@ -51812,23 +52545,23 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L13:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1275 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1275   *                 f_back_high[0] = f_high   *    *             if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev:             # <<<<<<<<<<<<<<   *                 return 1   *    */ -    __pyx_t_4 = ((__pyx_v_f_back_low[0]) == __pyx_v_f_low_prev); +    __pyx_t_4 = (((__pyx_v_f_back_low[0]) == __pyx_v_f_low_prev) != 0);      if (__pyx_t_4) { -      __pyx_t_5 = ((__pyx_v_f_back_high[0]) == __pyx_v_f_high_prev); +      __pyx_t_5 = (((__pyx_v_f_back_high[0]) == __pyx_v_f_high_prev) != 0);        __pyx_t_3 = __pyx_t_5;      } else {        __pyx_t_3 = __pyx_t_4;      }      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1276 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1276   *    *             if f_back_low[0] == f_low_prev and f_back_high[0] == f_high_prev:   *                 return 1             # <<<<<<<<<<<<<< @@ -51841,23 +52574,23 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L14:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1278 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1278   *                 return 1   *    *             if allow_low_x == 0 and f_back_low[0] < f_low:             # <<<<<<<<<<<<<<   *                 # FAIL: f phrase is not tight   *                 return 0   */ -    __pyx_t_3 = (__pyx_v_allow_low_x == 0); +    __pyx_t_3 = ((__pyx_v_allow_low_x == 0) != 0);      if (__pyx_t_3) { -      __pyx_t_4 = ((__pyx_v_f_back_low[0]) < __pyx_v_f_low); +      __pyx_t_4 = (((__pyx_v_f_back_low[0]) < __pyx_v_f_low) != 0);        __pyx_t_5 = __pyx_t_4;      } else {        __pyx_t_5 = __pyx_t_3;      }      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1280 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1280   *             if allow_low_x == 0 and f_back_low[0] < f_low:   *                 # FAIL: f phrase is not tight   *                 return 0             # <<<<<<<<<<<<<< @@ -51870,17 +52603,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L15:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1282 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1282   *                 return 0   *    *             if f_back_high[0] - f_back_low[0] > max_f_len:             # <<<<<<<<<<<<<<   *                 # FAIL: f back projection is too wide   *                 return 0   */ -    __pyx_t_5 = (((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len); +    __pyx_t_5 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1284 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1284   *             if f_back_high[0] - f_back_low[0] > max_f_len:   *                 # FAIL: f back projection is too wide   *                 return 0             # <<<<<<<<<<<<<< @@ -51893,7 +52626,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L16:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1286 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1286   *                 return 0   *    *             if allow_high_x == 0 and f_back_high[0] > f_high:             # <<<<<<<<<<<<<< @@ -51904,8 +52637,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      if (__pyx_t_5) {        __pyx_t_6 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_v_f_high, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_v_f_high, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -51915,7 +52647,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1288 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1288   *             if allow_high_x == 0 and f_back_high[0] > f_high:   *                 # FAIL: extension on high side not allowed   *                 return 0             # <<<<<<<<<<<<<< @@ -51928,37 +52660,37 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L17:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1290 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1290   *                 return 0   *    *             if f_low != f_back_low[0]:             # <<<<<<<<<<<<<<   *                 if new_low_x == 0:   *                     if new_x >= max_new_x:   */ -    __pyx_t_4 = (__pyx_v_f_low != (__pyx_v_f_back_low[0])); +    __pyx_t_4 = ((__pyx_v_f_low != (__pyx_v_f_back_low[0])) != 0);      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1291 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1291   *    *             if f_low != f_back_low[0]:   *                 if new_low_x == 0:             # <<<<<<<<<<<<<<   *                     if new_x >= max_new_x:   *                         # FAIL: extension required on low side violates max # of gaps   */ -      __pyx_t_4 = (__pyx_v_new_low_x == 0); +      __pyx_t_4 = ((__pyx_v_new_low_x == 0) != 0);        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1292 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1292   *             if f_low != f_back_low[0]:   *                 if new_low_x == 0:   *                     if new_x >= max_new_x:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on low side violates max # of gaps   *                         return 0   */ -        __pyx_t_4 = (__pyx_v_new_x >= __pyx_v_max_new_x); +        __pyx_t_4 = ((__pyx_v_new_x >= __pyx_v_max_new_x) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1294 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1294   *                     if new_x >= max_new_x:   *                         # FAIL: extension required on low side violates max # of gaps   *                         return 0             # <<<<<<<<<<<<<< @@ -51971,7 +52703,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1296 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1296   *                         return 0   *                     else:   *                         new_x = new_x + 1             # <<<<<<<<<<<<<< @@ -51980,7 +52712,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */            __pyx_v_new_x = (__pyx_v_new_x + 1); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1297 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1297   *                     else:   *                         new_x = new_x + 1   *                         new_low_x = 1             # <<<<<<<<<<<<<< @@ -51994,17 +52726,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj        }        __pyx_L19:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1298 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1298   *                         new_x = new_x + 1   *                         new_low_x = 1   *                 if f_low - f_back_low[0] < min_fx_size:             # <<<<<<<<<<<<<<   *                     f_back_low[0] = f_low - min_fx_size   *                     if f_back_high[0] - f_back_low[0] > max_f_len:   */ -      __pyx_t_4 = ((__pyx_v_f_low - (__pyx_v_f_back_low[0])) < __pyx_v_min_fx_size); +      __pyx_t_4 = (((__pyx_v_f_low - (__pyx_v_f_back_low[0])) < __pyx_v_min_fx_size) != 0);        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1299 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1299   *                         new_low_x = 1   *                 if f_low - f_back_low[0] < min_fx_size:   *                     f_back_low[0] = f_low - min_fx_size             # <<<<<<<<<<<<<< @@ -52013,17 +52745,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */          (__pyx_v_f_back_low[0]) = (__pyx_v_f_low - __pyx_v_min_fx_size); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1300 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1300   *                 if f_low - f_back_low[0] < min_fx_size:   *                     f_back_low[0] = f_low - min_fx_size   *                     if f_back_high[0] - f_back_low[0] > max_f_len:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on low side violates max initial length   *                         return 0   */ -        __pyx_t_4 = (((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len); +        __pyx_t_4 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1302 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1302   *                     if f_back_high[0] - f_back_low[0] > max_f_len:   *                         # FAIL: extension required on low side violates max initial length   *                         return 0             # <<<<<<<<<<<<<< @@ -52036,17 +52768,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj          }          __pyx_L22:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1303 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1303   *                         # FAIL: extension required on low side violates max initial length   *                         return 0   *                     if f_back_low[0] < 0:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on low side violates sentence boundary   *                         return 0   */ -        __pyx_t_4 = ((__pyx_v_f_back_low[0]) < 0); +        __pyx_t_4 = (((__pyx_v_f_back_low[0]) < 0) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1305 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1305   *                     if f_back_low[0] < 0:   *                         # FAIL: extension required on low side violates sentence boundary   *                         return 0             # <<<<<<<<<<<<<< @@ -52065,7 +52797,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L18:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1307 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1307   *                         return 0   *    *             if f_high != f_back_high[0]:             # <<<<<<<<<<<<<< @@ -52074,34 +52806,33 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */      __pyx_t_2 = PyInt_FromLong((__pyx_v_f_back_high[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = PyObject_RichCompare(__pyx_v_f_high, __pyx_t_2, Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); +    __pyx_t_6 = PyObject_RichCompare(__pyx_v_f_high, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      if (__pyx_t_4) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1308 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1308   *    *             if f_high != f_back_high[0]:   *                 if new_high_x == 0:             # <<<<<<<<<<<<<<   *                     if new_x >= max_new_x:   *                         # FAIL: extension required on high side violates max # of gaps   */ -      __pyx_t_4 = (__pyx_v_new_high_x == 0); +      __pyx_t_4 = ((__pyx_v_new_high_x == 0) != 0);        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1309 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1309   *             if f_high != f_back_high[0]:   *                 if new_high_x == 0:   *                     if new_x >= max_new_x:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on high side violates max # of gaps   *                         return 0   */ -        __pyx_t_4 = (__pyx_v_new_x >= __pyx_v_max_new_x); +        __pyx_t_4 = ((__pyx_v_new_x >= __pyx_v_max_new_x) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1311 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1311   *                     if new_x >= max_new_x:   *                         # FAIL: extension required on high side violates max # of gaps   *                         return 0             # <<<<<<<<<<<<<< @@ -52114,7 +52845,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj          }          /*else*/ { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1313 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1313   *                         return 0   *                     else:   *                         new_x = new_x + 1             # <<<<<<<<<<<<<< @@ -52123,7 +52854,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */            __pyx_v_new_x = (__pyx_v_new_x + 1); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1314 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1314   *                     else:   *                         new_x = new_x + 1   *                         new_high_x = 1             # <<<<<<<<<<<<<< @@ -52137,7 +52868,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj        }        __pyx_L25:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1315 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1315   *                         new_x = new_x + 1   *                         new_high_x = 1   *                 if f_back_high[0] - f_high < min_fx_size:             # <<<<<<<<<<<<<< @@ -52151,15 +52882,14 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __pyx_t_6 = PyInt_FromLong(__pyx_v_min_fx_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_LT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_7); +      __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1316 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1316   *                         new_high_x = 1   *                 if f_back_high[0] - f_high < min_fx_size:   *                     f_back_high[0] = f_high + min_fx_size             # <<<<<<<<<<<<<< @@ -52175,17 +52905,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;          (__pyx_v_f_back_high[0]) = __pyx_t_1; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1317 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1317   *                 if f_back_high[0] - f_high < min_fx_size:   *                     f_back_high[0] = f_high + min_fx_size   *                     if f_back_high[0] - f_back_low[0] > max_f_len:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on high side violates max initial length   *                         return 0   */ -        __pyx_t_4 = (((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len); +        __pyx_t_4 = ((((__pyx_v_f_back_high[0]) - (__pyx_v_f_back_low[0])) > __pyx_v_max_f_len) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1319 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1319   *                     if f_back_high[0] - f_back_low[0] > max_f_len:   *                         # FAIL: extension required on high side violates max initial length   *                         return 0             # <<<<<<<<<<<<<< @@ -52198,17 +52928,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj          }          __pyx_L28:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1320 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1320   *                         # FAIL: extension required on high side violates max initial length   *                         return 0   *                     if f_back_high[0] > f_sent_len:             # <<<<<<<<<<<<<<   *                         # FAIL: extension required on high side violates sentence boundary   *                         return 0   */ -        __pyx_t_4 = ((__pyx_v_f_back_high[0]) > __pyx_v_f_sent_len); +        __pyx_t_4 = (((__pyx_v_f_back_high[0]) > __pyx_v_f_sent_len) != 0);          if (__pyx_t_4) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1322 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1322   *                     if f_back_high[0] > f_sent_len:   *                         # FAIL: extension required on high side violates sentence boundary   *                         return 0             # <<<<<<<<<<<<<< @@ -52227,7 +52957,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L24:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1324 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1324   *                         return 0   *    *             e_low_prev = e_low[0]             # <<<<<<<<<<<<<< @@ -52236,7 +52966,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */      __pyx_v_e_low_prev = (__pyx_v_e_low[0]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1325 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1325   *    *             e_low_prev = e_low[0]   *             e_high_prev = e_high[0]             # <<<<<<<<<<<<<< @@ -52245,7 +52975,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */      __pyx_v_e_high_prev = (__pyx_v_e_high[0]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1327 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1327   *             e_high_prev = e_high[0]   *    *             self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)             # <<<<<<<<<<<<<< @@ -52256,7 +52986,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1328 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1328   *    *             self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)   *             self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)             # <<<<<<<<<<<<<< @@ -52267,23 +52997,23 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1329 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1329   *             self.find_projection(f_back_low[0], f_low_prev, f_links_low, f_links_high, e_low, e_high)   *             self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)   *             if e_low[0] == e_low_prev and e_high[0] == e_high_prev:             # <<<<<<<<<<<<<<   *                 return 1   *             if allow_arbitrary_x == 0:   */ -    __pyx_t_4 = ((__pyx_v_e_low[0]) == __pyx_v_e_low_prev); +    __pyx_t_4 = (((__pyx_v_e_low[0]) == __pyx_v_e_low_prev) != 0);      if (__pyx_t_4) { -      __pyx_t_5 = ((__pyx_v_e_high[0]) == __pyx_v_e_high_prev); +      __pyx_t_5 = (((__pyx_v_e_high[0]) == __pyx_v_e_high_prev) != 0);        __pyx_t_3 = __pyx_t_5;      } else {        __pyx_t_3 = __pyx_t_4;      }      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1330 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1330   *             self.find_projection(f_high_prev, f_back_high[0], f_links_low, f_links_high, e_low, e_high)   *             if e_low[0] == e_low_prev and e_high[0] == e_high_prev:   *                 return 1             # <<<<<<<<<<<<<< @@ -52296,17 +53026,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L30:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1331 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1331   *             if e_low[0] == e_low_prev and e_high[0] == e_high_prev:   *                 return 1   *             if allow_arbitrary_x == 0:             # <<<<<<<<<<<<<<   *                 # FAIL: arbitrary expansion not permitted   *                 return 0   */ -    __pyx_t_3 = (__pyx_v_allow_arbitrary_x == 0); +    __pyx_t_3 = ((__pyx_v_allow_arbitrary_x == 0) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1333 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1333   *             if allow_arbitrary_x == 0:   *                 # FAIL: arbitrary expansion not permitted   *                 return 0             # <<<<<<<<<<<<<< @@ -52319,17 +53049,17 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L31:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1334 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1334   *                 # FAIL: arbitrary expansion not permitted   *                 return 0   *             if e_high[0] - e_low[0] > max_e_len:             # <<<<<<<<<<<<<<   *                 # FAIL: re-projection violates sentence max phrase length   *                 return 0   */ -    __pyx_t_3 = (((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len); +    __pyx_t_3 = ((((__pyx_v_e_high[0]) - (__pyx_v_e_low[0])) > __pyx_v_max_e_len) != 0);      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1336 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1336   *             if e_high[0] - e_low[0] > max_e_len:   *                 # FAIL: re-projection violates sentence max phrase length   *                 return 0             # <<<<<<<<<<<<<< @@ -52342,7 +53072,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj      }      __pyx_L32:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1337 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1337   *                 # FAIL: re-projection violates sentence max phrase length   *                 return 0   *             f_low_prev = f_back_low[0]             # <<<<<<<<<<<<<< @@ -52351,7 +53081,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj   */      __pyx_v_f_low_prev = (__pyx_v_f_back_low[0]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1338 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1338   *                 return 0   *             f_low_prev = f_back_low[0]   *             f_high_prev = f_back_high[0]             # <<<<<<<<<<<<<< @@ -52374,7 +53104,7 @@ static int __pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint(struct __pyx_obj    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1341 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1341   *    *    *     cdef find_projection(self, int in_low, int in_high, int* in_links_low, int* in_links_high,             # <<<<<<<<<<<<<< @@ -52392,7 +53122,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection(CYTHON_U    int __pyx_t_4;    __Pyx_RefNannySetupContext("find_projection", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1344 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1344   *                         int* out_low, int* out_high):   *         cdef int i   *         for i from in_low <= i < in_high:             # <<<<<<<<<<<<<< @@ -52402,33 +53132,33 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection(CYTHON_U    __pyx_t_1 = __pyx_v_in_high;    for (__pyx_v_i = __pyx_v_in_low; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1345 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1345   *         cdef int i   *         for i from in_low <= i < in_high:   *             if in_links_low[i] != -1:             # <<<<<<<<<<<<<<   *                 if out_low[0] == -1 or in_links_low[i] < out_low[0]:   *                     out_low[0] = in_links_low[i]   */ -    __pyx_t_2 = ((__pyx_v_in_links_low[__pyx_v_i]) != -1); +    __pyx_t_2 = (((__pyx_v_in_links_low[__pyx_v_i]) != -1) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1346 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1346   *         for i from in_low <= i < in_high:   *             if in_links_low[i] != -1:   *                 if out_low[0] == -1 or in_links_low[i] < out_low[0]:             # <<<<<<<<<<<<<<   *                     out_low[0] = in_links_low[i]   *                 if out_high[0] == -1 or in_links_high[i] > out_high[0]:   */ -      __pyx_t_2 = ((__pyx_v_out_low[0]) == -1); +      __pyx_t_2 = (((__pyx_v_out_low[0]) == -1) != 0);        if (!__pyx_t_2) { -        __pyx_t_3 = ((__pyx_v_in_links_low[__pyx_v_i]) < (__pyx_v_out_low[0])); +        __pyx_t_3 = (((__pyx_v_in_links_low[__pyx_v_i]) < (__pyx_v_out_low[0])) != 0);          __pyx_t_4 = __pyx_t_3;        } else {          __pyx_t_4 = __pyx_t_2;        }        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1347 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1347   *             if in_links_low[i] != -1:   *                 if out_low[0] == -1 or in_links_low[i] < out_low[0]:   *                     out_low[0] = in_links_low[i]             # <<<<<<<<<<<<<< @@ -52440,23 +53170,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection(CYTHON_U        }        __pyx_L6:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1348 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1348   *                 if out_low[0] == -1 or in_links_low[i] < out_low[0]:   *                     out_low[0] = in_links_low[i]   *                 if out_high[0] == -1 or in_links_high[i] > out_high[0]:             # <<<<<<<<<<<<<<   *                     out_high[0] = in_links_high[i]   *    */ -      __pyx_t_4 = ((__pyx_v_out_high[0]) == -1); +      __pyx_t_4 = (((__pyx_v_out_high[0]) == -1) != 0);        if (!__pyx_t_4) { -        __pyx_t_2 = ((__pyx_v_in_links_high[__pyx_v_i]) > (__pyx_v_out_high[0])); +        __pyx_t_2 = (((__pyx_v_in_links_high[__pyx_v_i]) > (__pyx_v_out_high[0])) != 0);          __pyx_t_3 = __pyx_t_2;        } else {          __pyx_t_3 = __pyx_t_4;        }        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1349 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1349   *                     out_low[0] = in_links_low[i]   *                 if out_high[0] == -1 or in_links_high[i] > out_high[0]:   *                     out_high[0] = in_links_high[i]             # <<<<<<<<<<<<<< @@ -52478,7 +53208,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection(CYTHON_U    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1352 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1352   *    *    *     cdef int* int_arr_extend(self, int* arr, int* arr_len, int* data, int data_len):             # <<<<<<<<<<<<<< @@ -52492,7 +53222,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("int_arr_extend", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1354 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1354   *     cdef int* int_arr_extend(self, int* arr, int* arr_len, int* data, int data_len):   *         cdef int new_len   *         new_len = arr_len[0] + data_len             # <<<<<<<<<<<<<< @@ -52501,7 +53231,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED   */    __pyx_v_new_len = ((__pyx_v_arr_len[0]) + __pyx_v_data_len); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1355 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1355   *         cdef int new_len   *         new_len = arr_len[0] + data_len   *         arr = <int*> realloc(arr, new_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -52510,7 +53240,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED   */    __pyx_v_arr = ((int *)realloc(__pyx_v_arr, (__pyx_v_new_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1356 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1356   *         new_len = arr_len[0] + data_len   *         arr = <int*> realloc(arr, new_len*sizeof(int))   *         memcpy(arr+arr_len[0], data, data_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -52519,7 +53249,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED   */    memcpy((__pyx_v_arr + (__pyx_v_arr_len[0])), __pyx_v_data, (__pyx_v_data_len * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1357 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1357   *         arr = <int*> realloc(arr, new_len*sizeof(int))   *         memcpy(arr+arr_len[0], data, data_len*sizeof(int))   *         arr_len[0] = new_len             # <<<<<<<<<<<<<< @@ -52528,7 +53258,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED   */    (__pyx_v_arr_len[0]) = __pyx_v_new_len; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1358 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1358   *         memcpy(arr+arr_len[0], data, data_len*sizeof(int))   *         arr_len[0] = new_len   *         return arr             # <<<<<<<<<<<<<< @@ -52544,7 +53274,7 @@ static int *__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend(CYTHON_UNUSED    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1361 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1361   *    *    *     cdef extract_phrases(self, int e_low, int e_high, int* e_gap_low, int* e_gap_high, int* e_links_low, int num_gaps,             # <<<<<<<<<<<<<< @@ -52571,7 +53301,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    int __pyx_v_num_chunks;    struct __pyx_obj_3_sa_IntList *__pyx_v_ephr_arr = 0;    PyObject *__pyx_v_result = 0; -  PyObject *__pyx_v_indexes = NULL; +  struct __pyx_obj_3_sa_IntList *__pyx_v_indexes = 0;    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    PyObject *__pyx_t_1 = NULL; @@ -52583,14 +53313,13 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    int __pyx_t_7;    int __pyx_t_8;    long __pyx_t_9; -  int __pyx_t_10; -  PyObject *__pyx_t_11 = NULL; +  PyObject *__pyx_t_10 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("extract_phrases", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1369 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1369   *         cdef result   *    *         result = []             # <<<<<<<<<<<<<< @@ -52602,7 +53331,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    __pyx_v_result = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1370 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1370   *    *         result = []   *         len1 = 0             # <<<<<<<<<<<<<< @@ -52611,7 +53340,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_len1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1371 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1371   *         result = []   *         len1 = 0   *         e_gaps1 = <int*> malloc(0)             # <<<<<<<<<<<<<< @@ -52620,7 +53349,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_gaps1 = ((int *)malloc(0)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1372 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1372   *         len1 = 0   *         e_gaps1 = <int*> malloc(0)   *         ephr_arr = IntList()             # <<<<<<<<<<<<<< @@ -52632,7 +53361,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    __pyx_v_ephr_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1374 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1374   *         ephr_arr = IntList()   *    *         e_gap_order = <int*> malloc(num_gaps*sizeof(int))             # <<<<<<<<<<<<<< @@ -52641,17 +53370,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_gap_order = ((int *)malloc((__pyx_v_num_gaps * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1375 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1375   *    *         e_gap_order = <int*> malloc(num_gaps*sizeof(int))   *         if num_gaps > 0:             # <<<<<<<<<<<<<<   *             e_gap_order[0] = 0   *             for i from 1 <= i < num_gaps:   */ -  __pyx_t_2 = (__pyx_v_num_gaps > 0); +  __pyx_t_2 = ((__pyx_v_num_gaps > 0) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1376 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1376   *         e_gap_order = <int*> malloc(num_gaps*sizeof(int))   *         if num_gaps > 0:   *             e_gap_order[0] = 0             # <<<<<<<<<<<<<< @@ -52660,7 +53389,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      (__pyx_v_e_gap_order[0]) = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1377 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1377   *         if num_gaps > 0:   *             e_gap_order[0] = 0   *             for i from 1 <= i < num_gaps:             # <<<<<<<<<<<<<< @@ -52670,7 +53399,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      __pyx_t_3 = __pyx_v_num_gaps;      for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1378 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1378   *             e_gap_order[0] = 0   *             for i from 1 <= i < num_gaps:   *                 for j from 0 <= j < i:             # <<<<<<<<<<<<<< @@ -52680,17 +53409,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_t_4 = __pyx_v_i;        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1379 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1379   *             for i from 1 <= i < num_gaps:   *                 for j from 0 <= j < i:   *                     if e_gap_low[i] < e_gap_low[j]:             # <<<<<<<<<<<<<<   *                         for k from j <= k < i:   *                             e_gap_order[k+1] = e_gap_order[k]   */ -        __pyx_t_2 = ((__pyx_v_e_gap_low[__pyx_v_i]) < (__pyx_v_e_gap_low[__pyx_v_j])); +        __pyx_t_2 = (((__pyx_v_e_gap_low[__pyx_v_i]) < (__pyx_v_e_gap_low[__pyx_v_j])) != 0);          if (__pyx_t_2) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1380 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1380   *                 for j from 0 <= j < i:   *                     if e_gap_low[i] < e_gap_low[j]:   *                         for k from j <= k < i:             # <<<<<<<<<<<<<< @@ -52700,7 +53429,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _            __pyx_t_5 = __pyx_v_i;            for (__pyx_v_k = __pyx_v_j; __pyx_v_k < __pyx_t_5; __pyx_v_k++) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1381 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1381   *                     if e_gap_low[i] < e_gap_low[j]:   *                         for k from j <= k < i:   *                             e_gap_order[k+1] = e_gap_order[k]             # <<<<<<<<<<<<<< @@ -52710,7 +53439,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _              (__pyx_v_e_gap_order[(__pyx_v_k + 1)]) = (__pyx_v_e_gap_order[__pyx_v_k]);            } -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1382 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1382   *                         for k from j <= k < i:   *                             e_gap_order[k+1] = e_gap_order[k]   *                         e_gap_order[j] = i             # <<<<<<<<<<<<<< @@ -52719,7 +53448,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */            (__pyx_v_e_gap_order[__pyx_v_j]) = __pyx_v_i; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1383 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1383   *                             e_gap_order[k+1] = e_gap_order[k]   *                         e_gap_order[j] = i   *                         break             # <<<<<<<<<<<<<< @@ -52733,7 +53462,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1385 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1385   *                         break   *                 else:   *                     e_gap_order[i] = i             # <<<<<<<<<<<<<< @@ -52748,7 +53477,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1387 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1387   *                     e_gap_order[i] = i   *    *         e_x_low = e_low             # <<<<<<<<<<<<<< @@ -52757,7 +53486,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_x_low = __pyx_v_e_low; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1388 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1388   *    *         e_x_low = e_low   *         e_x_high = e_high             # <<<<<<<<<<<<<< @@ -52766,17 +53495,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_x_high = __pyx_v_e_high; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1389 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1389   *         e_x_low = e_low   *         e_x_high = e_high   *         if not self.tight_phrases:             # <<<<<<<<<<<<<<   *             while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:   *                 e_x_low = e_x_low - 1   */ -  __pyx_t_2 = (!__pyx_v_self->tight_phrases); +  __pyx_t_2 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);    if (__pyx_t_2) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1390 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1390   *         e_x_high = e_high   *         if not self.tight_phrases:   *             while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:             # <<<<<<<<<<<<<< @@ -52784,11 +53513,11 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *             while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:   */      while (1) { -      __pyx_t_2 = (__pyx_v_e_x_low > 0); +      __pyx_t_2 = ((__pyx_v_e_x_low > 0) != 0);        if (__pyx_t_2) { -        __pyx_t_6 = ((__pyx_v_e_high - __pyx_v_e_x_low) < __pyx_v_self->train_max_initial_size); +        __pyx_t_6 = (((__pyx_v_e_high - __pyx_v_e_x_low) < __pyx_v_self->train_max_initial_size) != 0);          if (__pyx_t_6) { -          __pyx_t_7 = ((__pyx_v_e_links_low[(__pyx_v_e_x_low - 1)]) == -1); +          __pyx_t_7 = (((__pyx_v_e_links_low[(__pyx_v_e_x_low - 1)]) == -1) != 0);            __pyx_t_8 = __pyx_t_7;          } else {            __pyx_t_8 = __pyx_t_6; @@ -52799,7 +53528,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        }        if (!__pyx_t_6) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1391 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1391   *         if not self.tight_phrases:   *             while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:   *                 e_x_low = e_x_low - 1             # <<<<<<<<<<<<<< @@ -52809,7 +53538,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_v_e_x_low = (__pyx_v_e_x_low - 1);      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1392 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1392   *             while e_x_low > 0 and e_high - e_x_low < self.train_max_initial_size and e_links_low[e_x_low-1] == -1:   *                 e_x_low = e_x_low - 1   *             while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:             # <<<<<<<<<<<<<< @@ -52817,11 +53546,11 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *    */      while (1) { -      __pyx_t_6 = (__pyx_v_e_x_high < __pyx_v_e_sent_len); +      __pyx_t_6 = ((__pyx_v_e_x_high < __pyx_v_e_sent_len) != 0);        if (__pyx_t_6) { -        __pyx_t_2 = ((__pyx_v_e_x_high - __pyx_v_e_low) < __pyx_v_self->train_max_initial_size); +        __pyx_t_2 = (((__pyx_v_e_x_high - __pyx_v_e_low) < __pyx_v_self->train_max_initial_size) != 0);          if (__pyx_t_2) { -          __pyx_t_8 = ((__pyx_v_e_links_low[__pyx_v_e_x_high]) == -1); +          __pyx_t_8 = (((__pyx_v_e_links_low[__pyx_v_e_x_high]) == -1) != 0);            __pyx_t_7 = __pyx_t_8;          } else {            __pyx_t_7 = __pyx_t_2; @@ -52832,7 +53561,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        }        if (!__pyx_t_2) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1393 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1393   *                 e_x_low = e_x_low - 1   *             while e_x_high < e_sent_len and e_x_high - e_low < self.train_max_initial_size and e_links_low[e_x_high] == -1:   *                 e_x_high = e_x_high + 1             # <<<<<<<<<<<<<< @@ -52845,7 +53574,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    }    __pyx_L11:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1395 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1395   *                 e_x_high = e_x_high + 1   *    *         for i from e_x_low <= i <= e_low:             # <<<<<<<<<<<<<< @@ -52855,7 +53584,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    __pyx_t_3 = __pyx_v_e_low;    for (__pyx_v_i = __pyx_v_e_x_low; __pyx_v_i <= __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1396 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1396   *    *         for i from e_x_low <= i <= e_low:   *             e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1)             # <<<<<<<<<<<<<< @@ -52865,7 +53594,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      __pyx_v_e_gaps1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps1, (&__pyx_v_len1), (&__pyx_v_i), 1);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1398 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1398   *             e_gaps1 = self.int_arr_extend(e_gaps1, &len1, &i, 1)   *    *         for i from 0 <= i < num_gaps:             # <<<<<<<<<<<<<< @@ -52875,7 +53604,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    __pyx_t_3 = __pyx_v_num_gaps;    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1399 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1399   *    *         for i from 0 <= i < num_gaps:   *             e_gaps2 = <int*> malloc(0)             # <<<<<<<<<<<<<< @@ -52884,7 +53613,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_e_gaps2 = ((int *)malloc(0)); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1400 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1400   *         for i from 0 <= i < num_gaps:   *             e_gaps2 = <int*> malloc(0)   *             len2 = 0             # <<<<<<<<<<<<<< @@ -52893,7 +53622,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_len2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1402 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1402   *             len2 = 0   *    *             j = e_gap_order[i]             # <<<<<<<<<<<<<< @@ -52902,7 +53631,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_j = (__pyx_v_e_gap_order[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1403 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1403   *    *             j = e_gap_order[i]   *             e_x_gap_low = e_gap_low[j]             # <<<<<<<<<<<<<< @@ -52911,7 +53640,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_e_x_gap_low = (__pyx_v_e_gap_low[__pyx_v_j]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1404 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1404   *             j = e_gap_order[i]   *             e_x_gap_low = e_gap_low[j]   *             e_x_gap_high = e_gap_high[j]             # <<<<<<<<<<<<<< @@ -52920,17 +53649,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_e_x_gap_high = (__pyx_v_e_gap_high[__pyx_v_j]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1405 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1405   *             e_x_gap_low = e_gap_low[j]   *             e_x_gap_high = e_gap_high[j]   *             if not self.tight_phrases:             # <<<<<<<<<<<<<<   *                 while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:   *                     e_x_gap_low = e_x_gap_low - 1   */ -    __pyx_t_2 = (!__pyx_v_self->tight_phrases); +    __pyx_t_2 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1406 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1406   *             e_x_gap_high = e_gap_high[j]   *             if not self.tight_phrases:   *                 while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:             # <<<<<<<<<<<<<< @@ -52938,16 +53667,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *                 while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:   */        while (1) { -        __pyx_t_2 = (__pyx_v_e_x_gap_low > __pyx_v_e_x_low); +        __pyx_t_2 = ((__pyx_v_e_x_gap_low > __pyx_v_e_x_low) != 0);          if (__pyx_t_2) { -          __pyx_t_6 = ((__pyx_v_e_links_low[(__pyx_v_e_x_gap_low - 1)]) == -1); +          __pyx_t_6 = (((__pyx_v_e_links_low[(__pyx_v_e_x_gap_low - 1)]) == -1) != 0);            __pyx_t_7 = __pyx_t_6;          } else {            __pyx_t_7 = __pyx_t_2;          }          if (!__pyx_t_7) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1407 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1407   *             if not self.tight_phrases:   *                 while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:   *                     e_x_gap_low = e_x_gap_low - 1             # <<<<<<<<<<<<<< @@ -52957,7 +53686,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _          __pyx_v_e_x_gap_low = (__pyx_v_e_x_gap_low - 1);        } -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1408 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1408   *                 while e_x_gap_low > e_x_low and e_links_low[e_x_gap_low-1] == -1:   *                     e_x_gap_low = e_x_gap_low - 1   *                 while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:             # <<<<<<<<<<<<<< @@ -52965,16 +53694,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *    */        while (1) { -        __pyx_t_7 = (__pyx_v_e_x_gap_high < __pyx_v_e_x_high); +        __pyx_t_7 = ((__pyx_v_e_x_gap_high < __pyx_v_e_x_high) != 0);          if (__pyx_t_7) { -          __pyx_t_2 = ((__pyx_v_e_links_low[__pyx_v_e_x_gap_high]) == -1); +          __pyx_t_2 = (((__pyx_v_e_links_low[__pyx_v_e_x_gap_high]) == -1) != 0);            __pyx_t_6 = __pyx_t_2;          } else {            __pyx_t_6 = __pyx_t_7;          }          if (!__pyx_t_6) break; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1409 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1409   *                     e_x_gap_low = e_x_gap_low - 1   *                 while e_x_gap_high < e_x_high and e_links_low[e_x_gap_high] == -1:   *                     e_x_gap_high = e_x_gap_high + 1             # <<<<<<<<<<<<<< @@ -52987,7 +53716,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      }      __pyx_L20:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1411 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1411   *                     e_x_gap_high = e_x_gap_high + 1   *    *             k = 0             # <<<<<<<<<<<<<< @@ -52996,7 +53725,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_k = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1412 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1412   *    *             k = 0   *             step = 1+(i*2)             # <<<<<<<<<<<<<< @@ -53005,7 +53734,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_step = (1 + (__pyx_v_i * 2)); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1413 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1413   *             k = 0   *             step = 1+(i*2)   *             while k < len1:             # <<<<<<<<<<<<<< @@ -53013,10 +53742,10 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *                     if m >= e_gaps1[k+step-1]:   */      while (1) { -      __pyx_t_6 = (__pyx_v_k < __pyx_v_len1); +      __pyx_t_6 = ((__pyx_v_k < __pyx_v_len1) != 0);        if (!__pyx_t_6) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1414 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1414   *             step = 1+(i*2)   *             while k < len1:   *                 for m from e_x_gap_low <= m <= e_gap_low[j]:             # <<<<<<<<<<<<<< @@ -53026,17 +53755,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_t_4 = (__pyx_v_e_gap_low[__pyx_v_j]);        for (__pyx_v_m = __pyx_v_e_x_gap_low; __pyx_v_m <= __pyx_t_4; __pyx_v_m++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1415 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1415   *             while k < len1:   *                 for m from e_x_gap_low <= m <= e_gap_low[j]:   *                     if m >= e_gaps1[k+step-1]:             # <<<<<<<<<<<<<<   *                         for n from e_gap_high[j] <= n <= e_x_gap_high:   *                             if n-m >= 1:    # extractor.py doesn't restrict target-side gap length   */ -        __pyx_t_6 = (__pyx_v_m >= (__pyx_v_e_gaps1[((__pyx_v_k + __pyx_v_step) - 1)])); +        __pyx_t_6 = ((__pyx_v_m >= (__pyx_v_e_gaps1[((__pyx_v_k + __pyx_v_step) - 1)])) != 0);          if (__pyx_t_6) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1416 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1416   *                 for m from e_x_gap_low <= m <= e_gap_low[j]:   *                     if m >= e_gaps1[k+step-1]:   *                         for n from e_gap_high[j] <= n <= e_x_gap_high:             # <<<<<<<<<<<<<< @@ -53046,17 +53775,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _            __pyx_t_5 = __pyx_v_e_x_gap_high;            for (__pyx_v_n = (__pyx_v_e_gap_high[__pyx_v_j]); __pyx_v_n <= __pyx_t_5; __pyx_v_n++) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1417 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1417   *                     if m >= e_gaps1[k+step-1]:   *                         for n from e_gap_high[j] <= n <= e_x_gap_high:   *                             if n-m >= 1:    # extractor.py doesn't restrict target-side gap length             # <<<<<<<<<<<<<<   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)   */ -            __pyx_t_6 = ((__pyx_v_n - __pyx_v_m) >= 1); +            __pyx_t_6 = (((__pyx_v_n - __pyx_v_m) >= 1) != 0);              if (__pyx_t_6) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1418 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1418   *                         for n from e_gap_high[j] <= n <= e_x_gap_high:   *                             if n-m >= 1:    # extractor.py doesn't restrict target-side gap length   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)             # <<<<<<<<<<<<<< @@ -53065,7 +53794,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */                __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (__pyx_v_e_gaps1 + __pyx_v_k), __pyx_v_step); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1419 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1419   *                             if n-m >= 1:    # extractor.py doesn't restrict target-side gap length   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)             # <<<<<<<<<<<<<< @@ -53074,7 +53803,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */                __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (&__pyx_v_m), 1); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1420 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1420   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+k, step)   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)             # <<<<<<<<<<<<<< @@ -53091,7 +53820,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _          __pyx_L29:;        } -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1421 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1421   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &m, 1)   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)   *                 k = k + step             # <<<<<<<<<<<<<< @@ -53101,7 +53830,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_v_k = (__pyx_v_k + __pyx_v_step);      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1422 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1422   *                                 e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &n, 1)   *                 k = k + step   *             free(e_gaps1)             # <<<<<<<<<<<<<< @@ -53110,7 +53839,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      free(__pyx_v_e_gaps1); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1423 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1423   *                 k = k + step   *             free(e_gaps1)   *             e_gaps1 = e_gaps2             # <<<<<<<<<<<<<< @@ -53119,7 +53848,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_e_gaps1 = __pyx_v_e_gaps2; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1424 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1424   *             free(e_gaps1)   *             e_gaps1 = e_gaps2   *             len1 = len2             # <<<<<<<<<<<<<< @@ -53129,7 +53858,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      __pyx_v_len1 = __pyx_v_len2;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1426 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1426   *             len1 = len2   *    *         step = 1+(num_gaps*2)             # <<<<<<<<<<<<<< @@ -53138,7 +53867,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_step = (1 + (__pyx_v_num_gaps * 2)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1427 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1427   *    *         step = 1+(num_gaps*2)   *         e_gaps2 = <int*> malloc(0)             # <<<<<<<<<<<<<< @@ -53147,7 +53876,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_gaps2 = ((int *)malloc(0)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1428 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1428   *         step = 1+(num_gaps*2)   *         e_gaps2 = <int*> malloc(0)   *         len2 = 0             # <<<<<<<<<<<<<< @@ -53156,7 +53885,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_len2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1429 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1429   *         e_gaps2 = <int*> malloc(0)   *         len2 = 0   *         for i from e_high <= i <= e_x_high:             # <<<<<<<<<<<<<< @@ -53166,7 +53895,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    __pyx_t_3 = __pyx_v_e_x_high;    for (__pyx_v_i = __pyx_v_e_high; __pyx_v_i <= __pyx_t_3; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1430 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1430   *         len2 = 0   *         for i from e_high <= i <= e_x_high:   *             j = 0             # <<<<<<<<<<<<<< @@ -53175,7 +53904,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_j = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1431 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1431   *         for i from e_high <= i <= e_x_high:   *             j = 0   *             while j < len1:             # <<<<<<<<<<<<<< @@ -53183,26 +53912,26 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)   */      while (1) { -      __pyx_t_6 = (__pyx_v_j < __pyx_v_len1); +      __pyx_t_6 = ((__pyx_v_j < __pyx_v_len1) != 0);        if (!__pyx_t_6) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1432 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1432   *             j = 0   *             while j < len1:   *                 if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:             # <<<<<<<<<<<<<<   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)   */ -      __pyx_t_6 = ((__pyx_v_i - (__pyx_v_e_gaps1[__pyx_v_j])) <= __pyx_v_self->train_max_initial_size); +      __pyx_t_6 = (((__pyx_v_i - (__pyx_v_e_gaps1[__pyx_v_j])) <= __pyx_v_self->train_max_initial_size) != 0);        if (__pyx_t_6) { -        __pyx_t_7 = (__pyx_v_i >= (__pyx_v_e_gaps1[((__pyx_v_j + __pyx_v_step) - 1)])); +        __pyx_t_7 = ((__pyx_v_i >= (__pyx_v_e_gaps1[((__pyx_v_j + __pyx_v_step) - 1)])) != 0);          __pyx_t_2 = __pyx_t_7;        } else {          __pyx_t_2 = __pyx_t_6;        }        if (__pyx_t_2) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1433 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1433   *             while j < len1:   *                 if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)             # <<<<<<<<<<<<<< @@ -53211,7 +53940,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */          __pyx_v_e_gaps2 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->int_arr_extend(__pyx_v_self, __pyx_v_e_gaps2, (&__pyx_v_len2), (__pyx_v_e_gaps1 + __pyx_v_j), __pyx_v_step); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1434 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1434   *                 if i - e_gaps1[j] <= self.train_max_initial_size and i >= e_gaps1[j+step-1]:   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)             # <<<<<<<<<<<<<< @@ -53223,7 +53952,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        }        __pyx_L37:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1435 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1435   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, e_gaps1+j, step)   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)   *                 j = j + step             # <<<<<<<<<<<<<< @@ -53234,7 +53963,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      }    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1436 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1436   *                     e_gaps2 = self.int_arr_extend(e_gaps2, &len2, &i, 1)   *                 j = j + step   *         free(e_gaps1)             # <<<<<<<<<<<<<< @@ -53243,7 +53972,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    free(__pyx_v_e_gaps1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1437 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1437   *                 j = j + step   *         free(e_gaps1)   *         e_gaps1 = e_gaps2             # <<<<<<<<<<<<<< @@ -53252,7 +53981,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_e_gaps1 = __pyx_v_e_gaps2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1438 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1438   *         free(e_gaps1)   *         e_gaps1 = e_gaps2   *         len1 = len2             # <<<<<<<<<<<<<< @@ -53261,7 +53990,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_len1 = __pyx_v_len2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1440 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1440   *         len1 = len2   *    *         step = (num_gaps+1)*2             # <<<<<<<<<<<<<< @@ -53270,60 +53999,60 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    __pyx_v_step = ((__pyx_v_num_gaps + 1) * 2); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1441 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1441   *    *         step = (num_gaps+1)*2   *         i = 0             # <<<<<<<<<<<<<<   *  - *         while i < len1: + *         cdef IntList indexes   */    __pyx_v_i = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1443 - *         i = 0 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1444   *  + *         cdef IntList indexes   *         while i < len1:             # <<<<<<<<<<<<<<   *             ephr_arr._clear()   *             num_chunks = 0   */    while (1) { -    __pyx_t_2 = (__pyx_v_i < __pyx_v_len1); +    __pyx_t_2 = ((__pyx_v_i < __pyx_v_len1) != 0);      if (!__pyx_t_2) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1444 - *  +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1445 + *         cdef IntList indexes   *         while i < len1:   *             ephr_arr._clear()             # <<<<<<<<<<<<<<   *             num_chunks = 0 - *             indexes = [] + *             indexes = IntList()   */      ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_ephr_arr->__pyx_vtab)->_clear(__pyx_v_ephr_arr); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1445 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1446   *         while i < len1:   *             ephr_arr._clear()   *             num_chunks = 0             # <<<<<<<<<<<<<< - *             indexes = [] + *             indexes = IntList()   *             for j from 0 <= j < num_gaps+1:   */      __pyx_v_num_chunks = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1446 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1447   *             ephr_arr._clear()   *             num_chunks = 0 - *             indexes = []             # <<<<<<<<<<<<<< + *             indexes = IntList()             # <<<<<<<<<<<<<<   *             for j from 0 <= j < num_gaps+1:   *                 if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:   */ -    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_XDECREF(((PyObject *)__pyx_v_indexes)); -    __pyx_v_indexes = __pyx_t_1; +    __pyx_v_indexes = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1447 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1448   *             num_chunks = 0 - *             indexes = [] + *             indexes = IntList()   *             for j from 0 <= j < num_gaps+1:             # <<<<<<<<<<<<<<   *                 if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:   *                     num_chunks = num_chunks + 1 @@ -53331,17 +54060,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _      __pyx_t_9 = (__pyx_v_num_gaps + 1);      for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_9; __pyx_v_j++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1448 - *             indexes = [] +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1449 + *             indexes = IntList()   *             for j from 0 <= j < num_gaps+1:   *                 if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:             # <<<<<<<<<<<<<<   *                     num_chunks = num_chunks + 1   *                 for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:   */ -      __pyx_t_2 = ((__pyx_v_e_gaps1[(__pyx_v_i + (2 * __pyx_v_j))]) < (__pyx_v_e_gaps1[((__pyx_v_i + (2 * __pyx_v_j)) + 1)])); +      __pyx_t_2 = (((__pyx_v_e_gaps1[(__pyx_v_i + (2 * __pyx_v_j))]) < (__pyx_v_e_gaps1[((__pyx_v_i + (2 * __pyx_v_j)) + 1)])) != 0);        if (__pyx_t_2) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1449 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1450   *             for j from 0 <= j < num_gaps+1:   *                 if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:   *                     num_chunks = num_chunks + 1             # <<<<<<<<<<<<<< @@ -53353,7 +54082,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        }        __pyx_L42:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1450 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1451   *                 if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:   *                     num_chunks = num_chunks + 1   *                 for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:             # <<<<<<<<<<<<<< @@ -53363,19 +54092,21 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_t_3 = (__pyx_v_e_gaps1[((__pyx_v_i + (2 * __pyx_v_j)) + 1)]);        for (__pyx_v_k = (__pyx_v_e_gaps1[(__pyx_v_i + (2 * __pyx_v_j))]); __pyx_v_k < __pyx_t_3; __pyx_v_k++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1451 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1452   *                     num_chunks = num_chunks + 1   *                 for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:   *                     indexes.append(k)             # <<<<<<<<<<<<<<   *                     ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])   *                 if j < num_gaps:   */ -        __pyx_t_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_10 = PyList_Append(__pyx_v_indexes, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_indexes), __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_10);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1452 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1453   *                 for k from e_gaps1[i+2*j] <= k < e_gaps1[i+(2*j)+1]:   *                     indexes.append(k)   *                     ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])             # <<<<<<<<<<<<<< @@ -53383,36 +54114,38 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   *                     indexes.append(sym_setindex(self.category, e_gap_order[j]+1))   */          __pyx_t_4 = (__pyx_v_self->eda->data->arr[(__pyx_v_e_sent_start + __pyx_v_k)]); -        __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->eid2symid), __pyx_t_4, sizeof(int), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->eid2symid), __pyx_t_4, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_10); +        __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;          ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_ephr_arr->__pyx_vtab)->_append(__pyx_v_ephr_arr, __pyx_t_4);        } -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1453 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1454   *                     indexes.append(k)   *                     ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])   *                 if j < num_gaps:             # <<<<<<<<<<<<<<   *                     indexes.append(sym_setindex(self.category, e_gap_order[j]+1))   *                     ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))   */ -      __pyx_t_2 = (__pyx_v_j < __pyx_v_num_gaps); +      __pyx_t_2 = ((__pyx_v_j < __pyx_v_num_gaps) != 0);        if (__pyx_t_2) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1454 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1455   *                     ephr_arr._append(self.eid2symid[self.eda.data.arr[e_sent_start+k]])   *                 if j < num_gaps:   *                     indexes.append(sym_setindex(self.category, e_gap_order[j]+1))             # <<<<<<<<<<<<<<   *                     ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))   *             i = i + step   */ -        __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, ((__pyx_v_e_gap_order[__pyx_v_j]) + 1))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, ((__pyx_v_e_gap_order[__pyx_v_j]) + 1))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_10); +        __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_indexes), __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_10 = PyList_Append(__pyx_v_indexes, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1455 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1456   *                 if j < num_gaps:   *                     indexes.append(sym_setindex(self.category, e_gap_order[j]+1))   *                     ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))             # <<<<<<<<<<<<<< @@ -53425,7 +54158,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _        __pyx_L45:;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1456 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1457   *                     indexes.append(sym_setindex(self.category, e_gap_order[j]+1))   *                     ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))   *             i = i + step             # <<<<<<<<<<<<<< @@ -53434,55 +54167,55 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */      __pyx_v_i = (__pyx_v_i + __pyx_v_step); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1457 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1458   *                     ephr_arr._append(sym_setindex(self.category, e_gap_order[j]+1))   *             i = i + step   *             if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:             # <<<<<<<<<<<<<<   *                 result.append((Phrase(ephr_arr),indexes))   *    */ -    __pyx_t_2 = (__pyx_v_ephr_arr->len <= __pyx_v_self->max_target_length); +    __pyx_t_2 = ((__pyx_v_ephr_arr->len <= __pyx_v_self->max_target_length) != 0);      if (__pyx_t_2) { -      __pyx_t_6 = (__pyx_v_num_chunks <= __pyx_v_self->max_target_chunks); +      __pyx_t_6 = ((__pyx_v_num_chunks <= __pyx_v_self->max_target_chunks) != 0);        __pyx_t_7 = __pyx_t_6;      } else {        __pyx_t_7 = __pyx_t_2;      }      if (__pyx_t_7) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1458 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1459   *             i = i + step   *             if ephr_arr.len <= self.max_target_length and num_chunks <= self.max_target_chunks:   *                 result.append((Phrase(ephr_arr),indexes))             # <<<<<<<<<<<<<<   *    *         free(e_gaps1)   */ -      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __Pyx_INCREF(((PyObject *)__pyx_v_ephr_arr));        PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_ephr_arr));        __Pyx_GIVEREF(((PyObject *)__pyx_v_ephr_arr)); -      __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_11); +      __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_10);        __Pyx_DECREF(((PyObject *)__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 = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11); -      __Pyx_GIVEREF(__pyx_t_11); +      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); +      __Pyx_GIVEREF(__pyx_t_10);        __Pyx_INCREF(((PyObject *)__pyx_v_indexes));        PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_indexes));        __Pyx_GIVEREF(((PyObject *)__pyx_v_indexes)); -      __pyx_t_11 = 0; -      __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_11); +      __pyx_t_10 = 0; +      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_10);        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; +      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;        goto __pyx_L46;      }      __pyx_L46:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1460 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1461   *                 result.append((Phrase(ephr_arr),indexes))   *    *         free(e_gaps1)             # <<<<<<<<<<<<<< @@ -53491,7 +54224,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    free(__pyx_v_e_gaps1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1461 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1462   *    *         free(e_gaps1)   *         free(e_gap_order)             # <<<<<<<<<<<<<< @@ -53500,12 +54233,12 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _   */    free(__pyx_v_e_gap_order); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1462 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1463   *         free(e_gaps1)   *         free(e_gap_order)   *         return result             # <<<<<<<<<<<<<<   *  - *     cdef IntList create_alignments(self, int* sent_links, int num_links, findexes, eindexes): + *     cdef IntList create_alignments(self, int* sent_links, int num_links,   */    __Pyx_XDECREF(__pyx_r);    __Pyx_INCREF(__pyx_v_result); @@ -53516,36 +54249,36 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases(struct _    goto __pyx_L0;    __pyx_L1_error:;    __Pyx_XDECREF(__pyx_t_1); -  __Pyx_XDECREF(__pyx_t_11); +  __Pyx_XDECREF(__pyx_t_10);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.extract_phrases", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = 0;    __pyx_L0:;    __Pyx_XDECREF((PyObject *)__pyx_v_ephr_arr);    __Pyx_XDECREF(__pyx_v_result); -  __Pyx_XDECREF(__pyx_v_indexes); +  __Pyx_XDECREF((PyObject *)__pyx_v_indexes);    __Pyx_XGIVEREF(__pyx_r);    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1464 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1465   *         return result   *  - *     cdef IntList create_alignments(self, int* sent_links, int num_links, findexes, eindexes):             # <<<<<<<<<<<<<< + *     cdef IntList create_alignments(self, int* sent_links, int num_links,             # <<<<<<<<<<<<<< + *             IntList findexes, IntList eindexes):   *         cdef unsigned i - *         cdef IntList ret = IntList()   */ -static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int *__pyx_v_sent_links, int __pyx_v_num_links, PyObject *__pyx_v_findexes, PyObject *__pyx_v_eindexes) { +static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments(CYTHON_UNUSED struct __pyx_obj_3_sa_HieroCachingRuleFactory *__pyx_v_self, int *__pyx_v_sent_links, int __pyx_v_num_links, struct __pyx_obj_3_sa_IntList *__pyx_v_findexes, struct __pyx_obj_3_sa_IntList *__pyx_v_eindexes) {    unsigned int __pyx_v_i;    struct __pyx_obj_3_sa_IntList *__pyx_v_ret = 0; -  PyObject *__pyx_v_s = NULL; +  int __pyx_v_s;    PyObject *__pyx_v_idx = NULL;    PyObject *__pyx_v_j = NULL;    struct __pyx_obj_3_sa_IntList *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    PyObject *__pyx_t_1 = NULL; -  Py_ssize_t __pyx_t_2; +  int __pyx_t_2;    unsigned int __pyx_t_3;    int __pyx_t_4;    PyObject *__pyx_t_5 = NULL; @@ -53556,178 +54289,156 @@ static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_cre    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("create_alignments", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1466 - *     cdef IntList create_alignments(self, int* sent_links, int num_links, findexes, eindexes): +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1468 + *             IntList findexes, IntList eindexes):   *         cdef unsigned i   *         cdef IntList ret = IntList()             # <<<<<<<<<<<<<< - *         for i in range(len(findexes)): - *             s = findexes[i] + *         for i in range(findexes.len): + *             s = findexes.arr[i]   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1466; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_ret = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1467 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1469   *         cdef unsigned i   *         cdef IntList ret = IntList() - *         for i in range(len(findexes)):             # <<<<<<<<<<<<<< - *             s = findexes[i] - *             if (s<0): + *         for i in range(findexes.len):             # <<<<<<<<<<<<<< + *             s = findexes.arr[i] + *             if s < 0: continue   */ -  __pyx_t_2 = PyObject_Length(__pyx_v_findexes); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1467; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __pyx_v_findexes->len;    for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {      __pyx_v_i = __pyx_t_3; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1468 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1470   *         cdef IntList ret = IntList() - *         for i in range(len(findexes)): - *             s = findexes[i]             # <<<<<<<<<<<<<< - *             if (s<0): - *                 continue - */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_findexes, __pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_XDECREF(__pyx_v_s); -    __pyx_v_s = __pyx_t_1; -    __pyx_t_1 = 0; - -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1469 - *         for i in range(len(findexes)): - *             s = findexes[i] - *             if (s<0):             # <<<<<<<<<<<<<< - *                 continue + *         for i in range(findexes.len): + *             s = findexes.arr[i]             # <<<<<<<<<<<<<< + *             if s < 0: continue   *             idx = 0   */ -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_s, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1469; __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 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    if (__pyx_t_4) { +    __pyx_v_s = (__pyx_v_findexes->arr[__pyx_v_i]); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1470 - *             s = findexes[i] - *             if (s<0): - *                 continue             # <<<<<<<<<<<<<< +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1471 + *         for i in range(findexes.len): + *             s = findexes.arr[i] + *             if s < 0: continue             # <<<<<<<<<<<<<<   *             idx = 0 - *             while (idx < num_links*2): + *             while idx < num_links * 2:   */ +    __pyx_t_4 = ((__pyx_v_s < 0) != 0); +    if (__pyx_t_4) {        goto __pyx_L3_continue;        goto __pyx_L5;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1471 - *             if (s<0): - *                 continue +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1472 + *             s = findexes.arr[i] + *             if s < 0: continue   *             idx = 0             # <<<<<<<<<<<<<< - *             while (idx < num_links*2): - *                 if (sent_links[idx] == s): + *             while idx < num_links * 2: + *                 if sent_links[idx] == s:   */      __Pyx_INCREF(__pyx_int_0);      __Pyx_XDECREF(__pyx_v_idx);      __pyx_v_idx = __pyx_int_0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1472 - *                 continue +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1473 + *             if s < 0: continue   *             idx = 0 - *             while (idx < num_links*2):             # <<<<<<<<<<<<<< - *                 if (sent_links[idx] == s): + *             while idx < num_links * 2:             # <<<<<<<<<<<<<< + *                 if sent_links[idx] == s:   *                     j = eindexes.index(sent_links[idx+1])   */      while (1) { -      __pyx_t_1 = PyInt_FromLong((__pyx_v_num_links * 2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyInt_FromLong((__pyx_v_num_links * 2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_5 = PyObject_RichCompare(__pyx_v_idx, __pyx_t_1, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_5 = PyObject_RichCompare(__pyx_v_idx, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;        if (!__pyx_t_4) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1473 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1474   *             idx = 0 - *             while (idx < num_links*2): - *                 if (sent_links[idx] == s):             # <<<<<<<<<<<<<< + *             while idx < num_links * 2: + *                 if sent_links[idx] == s:             # <<<<<<<<<<<<<<   *                     j = eindexes.index(sent_links[idx+1]) - *                     ret.append(i*65536+j) + *                     ret.append(i * ALIGNMENT_CODE + j)   */ -      __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_5 = PyInt_FromLong((__pyx_v_sent_links[__pyx_t_6])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_v_s, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1473; __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[8]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = (((__pyx_v_sent_links[__pyx_t_6]) == __pyx_v_s) != 0);        if (__pyx_t_4) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1474 - *             while (idx < num_links*2): - *                 if (sent_links[idx] == s): +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1475 + *             while idx < num_links * 2: + *                 if sent_links[idx] == s:   *                     j = eindexes.index(sent_links[idx+1])             # <<<<<<<<<<<<<< - *                     ret.append(i*65536+j) + *                     ret.append(i * ALIGNMENT_CODE + j)   *                 idx += 2   */ -        __pyx_t_1 = PyObject_GetAttr(__pyx_v_eindexes, __pyx_n_s__index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_5 = PyNumber_Add(__pyx_v_idx, __pyx_int_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); -        __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -        __pyx_t_5 = PyInt_FromLong((__pyx_v_sent_links[__pyx_t_6])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); -        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __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); -        __pyx_t_5 = 0; -        __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_eindexes), __pyx_n_s__index); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_5); +        __pyx_t_1 = PyNumber_Add(__pyx_v_idx, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_1 = PyInt_FromLong((__pyx_v_sent_links[__pyx_t_6])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_7); +        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); +        __Pyx_GIVEREF(__pyx_t_1); +        __pyx_t_1 = 0; +        __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1); +        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;          __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;          __Pyx_XDECREF(__pyx_v_j); -        __pyx_v_j = __pyx_t_5; -        __pyx_t_5 = 0; +        __pyx_v_j = __pyx_t_1; +        __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1475 - *                 if (sent_links[idx] == s): +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1476 + *                 if sent_links[idx] == s:   *                     j = eindexes.index(sent_links[idx+1]) - *                     ret.append(i*65536+j)             # <<<<<<<<<<<<<< + *                     ret.append(i * ALIGNMENT_CODE + j)             # <<<<<<<<<<<<<<   *                 idx += 2   *         return ret   */ -        __pyx_t_5 = PyInt_FromLong((__pyx_v_i * 65536)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); -        __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_i * __pyx_v_3_sa_ALIGNMENT_CODE)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_7 = PyNumber_Add(__pyx_t_1, __pyx_v_j); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_7); -        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -        __pyx_t_5 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_ret), __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_5); +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_ret), __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_1);          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;          goto __pyx_L8;        }        __pyx_L8:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1476 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1477   *                     j = eindexes.index(sent_links[idx+1]) - *                     ret.append(i*65536+j) + *                     ret.append(i * ALIGNMENT_CODE + j)   *                 idx += 2             # <<<<<<<<<<<<<<   *         return ret   *    */ -      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_idx, __pyx_int_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_idx, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_v_idx); -      __pyx_v_idx = __pyx_t_5; -      __pyx_t_5 = 0; +      __pyx_v_idx = __pyx_t_1; +      __pyx_t_1 = 0;      }      __pyx_L3_continue:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1477 - *                     ret.append(i*65536+j) +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1478 + *                     ret.append(i * ALIGNMENT_CODE + j)   *                 idx += 2   *         return ret             # <<<<<<<<<<<<<<   *  @@ -53748,7 +54459,6 @@ static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_cre    __pyx_r = 0;    __pyx_L0:;    __Pyx_XDECREF((PyObject *)__pyx_v_ret); -  __Pyx_XDECREF(__pyx_v_s);    __Pyx_XDECREF(__pyx_v_idx);    __Pyx_XDECREF(__pyx_v_j);    __Pyx_XGIVEREF((PyObject *)__pyx_r); @@ -53756,7 +54466,7 @@ static struct __pyx_obj_3_sa_IntList *__pyx_f_3_sa_23HieroCachingRuleFactory_cre    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1479 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1480   *         return ret   *    *     cdef extract(self, Phrase phrase, Matching* matching, int* chunklen, int num_chunks):             # <<<<<<<<<<<<<< @@ -53821,8 +54531,8 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations    PyObject *__pyx_t_1 = NULL; -  PyObject *__pyx_t_2 = NULL; -  int __pyx_t_3; +  int __pyx_t_2; +  PyObject *__pyx_t_3 = NULL;    int __pyx_t_4;    int __pyx_t_5;    int __pyx_t_6; @@ -53850,40 +54560,41 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("extract", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1492 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1493   *         cdef reason_for_failure   *    *         fphr_arr = IntList()             # <<<<<<<<<<<<<<   *         phrase_len = phrase.n   *         extracts = []   */ -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_IntList)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_fphr_arr = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1493 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1494   *    *         fphr_arr = IntList()   *         phrase_len = phrase.n             # <<<<<<<<<<<<<<   *         extracts = []   *         sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)   */ -  __pyx_v_phrase_len = __pyx_v_phrase->n; +  __pyx_t_2 = __pyx_v_phrase->n; +  __pyx_v_phrase_len = __pyx_t_2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1494 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1495   *         fphr_arr = IntList()   *         phrase_len = phrase.n   *         extracts = []             # <<<<<<<<<<<<<<   *         sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)   *    */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_extracts = ((PyObject *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1495 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1496   *         phrase_len = phrase.n   *         extracts = []   *         sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)             # <<<<<<<<<<<<<< @@ -53892,7 +54603,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_sent_links = ((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_v_self->alignment->__pyx_vtab)->_get_sent_links(__pyx_v_self->alignment, __pyx_v_matching->sent_id, (&__pyx_v_num_links)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1497 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1498   *         sent_links = self.alignment._get_sent_links(matching.sent_id, &num_links)   *    *         e_sent_start = self.eda.sent_index.arr[matching.sent_id]             # <<<<<<<<<<<<<< @@ -53901,7 +54612,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_sent_start = (__pyx_v_self->eda->sent_index->arr[__pyx_v_matching->sent_id]); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1498 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1499   *    *         e_sent_start = self.eda.sent_index.arr[matching.sent_id]   *         e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]             # <<<<<<<<<<<<<< @@ -53910,7 +54621,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_sent_end = (__pyx_v_self->eda->sent_index->arr[(__pyx_v_matching->sent_id + 1)]); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1499 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1500   *         e_sent_start = self.eda.sent_index.arr[matching.sent_id]   *         e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]   *         e_sent_len = e_sent_end - e_sent_start - 1             # <<<<<<<<<<<<<< @@ -53919,7 +54630,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_sent_len = ((__pyx_v_e_sent_end - __pyx_v_e_sent_start) - 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1500 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1501   *         e_sent_end = self.eda.sent_index.arr[matching.sent_id+1]   *         e_sent_len = e_sent_end - e_sent_start - 1   *         f_sent_start = self.fda.sent_index.arr[matching.sent_id]             # <<<<<<<<<<<<<< @@ -53928,7 +54639,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_sent_start = (__pyx_v_self->fda->sent_index->arr[__pyx_v_matching->sent_id]); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1501 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1502   *         e_sent_len = e_sent_end - e_sent_start - 1   *         f_sent_start = self.fda.sent_index.arr[matching.sent_id]   *         f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]             # <<<<<<<<<<<<<< @@ -53937,7 +54648,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_sent_end = (__pyx_v_self->fda->sent_index->arr[(__pyx_v_matching->sent_id + 1)]); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1502 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1503   *         f_sent_start = self.fda.sent_index.arr[matching.sent_id]   *         f_sent_end = self.fda.sent_index.arr[matching.sent_id+1]   *         f_sent_len = f_sent_end - f_sent_start - 1             # <<<<<<<<<<<<<< @@ -53946,21 +54657,21 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_sent_len = ((__pyx_v_f_sent_end - __pyx_v_f_sent_start) - 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1504 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1505   *         f_sent_len = f_sent_end - f_sent_start - 1   *    *         self.findexes1.reset()             # <<<<<<<<<<<<<<   *         sofar = 0   *         for i in range(num_chunks):   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes1), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes1), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1505; __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 = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1505; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1505 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1506   *    *         self.findexes1.reset()   *         sofar = 0             # <<<<<<<<<<<<<< @@ -53970,18 +54681,18 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    __Pyx_INCREF(__pyx_int_0);    __pyx_v_sofar = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1506 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1507   *         self.findexes1.reset()   *         sofar = 0   *         for i in range(num_chunks):             # <<<<<<<<<<<<<<   *             for j in range(chunklen[i]):   *                 self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);   */ -  __pyx_t_3 = __pyx_v_num_chunks; -  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { +  __pyx_t_2 = __pyx_v_num_chunks; +  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_2; __pyx_t_4+=1) {      __pyx_v_i = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1507 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1508   *         sofar = 0   *         for i in range(num_chunks):   *             for j in range(chunklen[i]):             # <<<<<<<<<<<<<< @@ -53992,76 +54703,76 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {        __pyx_v_j = __pyx_t_6; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1508 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1509   *         for i in range(num_chunks):   *             for j in range(chunklen[i]):   *                 self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);             # <<<<<<<<<<<<<<   *                 sofar += 1 - *             if (i+1<num_chunks): + *             if i+1 < num_chunks:   */ -      __pyx_t_2 = PyInt_FromLong((((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyInt_FromLong((((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3); +      __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1509; __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_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1509 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1510   *             for j in range(chunklen[i]):   *                 self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);   *                 sofar += 1             # <<<<<<<<<<<<<< - *             if (i+1<num_chunks): + *             if i+1 < num_chunks:   *                 self.findexes1.append(phrase[sofar])   */ -      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_v_sofar);        __pyx_v_sofar = __pyx_t_1;        __pyx_t_1 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1510 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1511   *                 self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);   *                 sofar += 1 - *             if (i+1<num_chunks):             # <<<<<<<<<<<<<< + *             if i+1 < num_chunks:             # <<<<<<<<<<<<<<   *                 self.findexes1.append(phrase[sofar])   *                 sofar += 1   */ -    __pyx_t_7 = ((__pyx_v_i + 1) < __pyx_v_num_chunks); +    __pyx_t_7 = (((__pyx_v_i + 1) < __pyx_v_num_chunks) != 0);      if (__pyx_t_7) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1511 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1512   *                 sofar += 1 - *             if (i+1<num_chunks): + *             if i+1 < num_chunks:   *                 self.findexes1.append(phrase[sofar])             # <<<<<<<<<<<<<<   *                 sofar += 1   *    */ -      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_phrase), __pyx_v_sofar); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_phrase), __pyx_v_sofar); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes1), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1512; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1512 - *             if (i+1<num_chunks): +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1513 + *             if i+1 < num_chunks:   *                 self.findexes1.append(phrase[sofar])   *                 sofar += 1             # <<<<<<<<<<<<<<   *    *    */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_sofar, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_sofar); -      __pyx_v_sofar = __pyx_t_2; -      __pyx_t_2 = 0; +      __pyx_v_sofar = __pyx_t_3; +      __pyx_t_3 = 0;        goto __pyx_L7;      }      __pyx_L7:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1515 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1516   *    *    *         e_links_low = <int*> malloc(e_sent_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -54070,7 +54781,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_links_low = ((int *)malloc((__pyx_v_e_sent_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1516 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1517   *    *         e_links_low = <int*> malloc(e_sent_len*sizeof(int))   *         e_links_high = <int*> malloc(e_sent_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -54079,7 +54790,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_links_high = ((int *)malloc((__pyx_v_e_sent_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1517 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1518   *         e_links_low = <int*> malloc(e_sent_len*sizeof(int))   *         e_links_high = <int*> malloc(e_sent_len*sizeof(int))   *         f_links_low = <int*> malloc(f_sent_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -54088,7 +54799,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_links_low = ((int *)malloc((__pyx_v_f_sent_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1518 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1519   *         e_links_high = <int*> malloc(e_sent_len*sizeof(int))   *         f_links_low = <int*> malloc(f_sent_len*sizeof(int))   *         f_links_high = <int*> malloc(f_sent_len*sizeof(int))             # <<<<<<<<<<<<<< @@ -54097,7 +54808,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_links_high = ((int *)malloc((__pyx_v_f_sent_len * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1519 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1520   *         f_links_low = <int*> malloc(f_sent_len*sizeof(int))   *         f_links_high = <int*> malloc(f_sent_len*sizeof(int))   *         f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54106,7 +54817,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_gap_low = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1520 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1521   *         f_links_high = <int*> malloc(f_sent_len*sizeof(int))   *         f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))   *         f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54115,7 +54826,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_gap_high = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1521 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1522   *         f_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))   *         f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))   *         e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54124,7 +54835,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_gap_low = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1522 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1523   *         f_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))   *         e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))   *         e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54133,7 +54844,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_e_gap_high = ((int *)malloc(((__pyx_v_num_chunks + 1) * (sizeof(int))))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1523 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1524   *         e_gap_low = <int*> malloc((num_chunks+1)*sizeof(int))   *         e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))   *         memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54142,7 +54853,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    memset(__pyx_v_f_gap_low, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1524 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1525   *         e_gap_high = <int*> malloc((num_chunks+1)*sizeof(int))   *         memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))   *         memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54151,7 +54862,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    memset(__pyx_v_f_gap_high, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1525 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1526   *         memset(f_gap_low, 0, (num_chunks+1)*sizeof(int))   *         memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))   *         memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54160,7 +54871,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    memset(__pyx_v_e_gap_low, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1526 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1527   *         memset(f_gap_high, 0, (num_chunks+1)*sizeof(int))   *         memset(e_gap_low, 0, (num_chunks+1)*sizeof(int))   *         memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))             # <<<<<<<<<<<<<< @@ -54169,27 +54880,27 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    memset(__pyx_v_e_gap_high, 0, ((__pyx_v_num_chunks + 1) * (sizeof(int)))); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1528 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1529   *         memset(e_gap_high, 0, (num_chunks+1)*sizeof(int))   *    *         reason_for_failure = ""             # <<<<<<<<<<<<<<   *    *         for i from 0 <= i < e_sent_len:   */ -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_45)); -  __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_45); +  __Pyx_INCREF(((PyObject *)__pyx_kp_s_47)); +  __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_47); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1530 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1531   *         reason_for_failure = ""   *    *         for i from 0 <= i < e_sent_len:             # <<<<<<<<<<<<<<   *             e_links_low[i] = -1   *             e_links_high[i] = -1   */ -  __pyx_t_3 = __pyx_v_e_sent_len; -  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { +  __pyx_t_2 = __pyx_v_e_sent_len; +  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1531 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1532   *    *         for i from 0 <= i < e_sent_len:   *             e_links_low[i] = -1             # <<<<<<<<<<<<<< @@ -54198,7 +54909,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */      (__pyx_v_e_links_low[__pyx_v_i]) = -1; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1532 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1533   *         for i from 0 <= i < e_sent_len:   *             e_links_low[i] = -1   *             e_links_high[i] = -1             # <<<<<<<<<<<<<< @@ -54208,17 +54919,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      (__pyx_v_e_links_high[__pyx_v_i]) = -1;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1533 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1534   *             e_links_low[i] = -1   *             e_links_high[i] = -1   *         for i from 0 <= i < f_sent_len:             # <<<<<<<<<<<<<<   *             f_links_low[i] = -1   *             f_links_high[i] = -1   */ -  __pyx_t_3 = __pyx_v_f_sent_len; -  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { +  __pyx_t_2 = __pyx_v_f_sent_len; +  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1534 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1535   *             e_links_high[i] = -1   *         for i from 0 <= i < f_sent_len:   *             f_links_low[i] = -1             # <<<<<<<<<<<<<< @@ -54227,7 +54938,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */      (__pyx_v_f_links_low[__pyx_v_i]) = -1; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1535 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1536   *         for i from 0 <= i < f_sent_len:   *             f_links_low[i] = -1   *             f_links_high[i] = -1             # <<<<<<<<<<<<<< @@ -54237,7 +54948,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      (__pyx_v_f_links_high[__pyx_v_i]) = -1;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1541 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1542   *         # links that we care about (but then how to look up   *         # when we want to check something on the e side?)   *         i = 0             # <<<<<<<<<<<<<< @@ -54246,7 +54957,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_i = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1542 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1543   *         # when we want to check something on the e side?)   *         i = 0   *         while i < num_links*2:             # <<<<<<<<<<<<<< @@ -54254,10 +54965,10 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   *             e_i = sent_links[i+1]   */    while (1) { -    __pyx_t_7 = (__pyx_v_i < (__pyx_v_num_links * 2)); +    __pyx_t_7 = ((__pyx_v_i < (__pyx_v_num_links * 2)) != 0);      if (!__pyx_t_7) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1543 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1544   *         i = 0   *         while i < num_links*2:   *             f_i = sent_links[i]             # <<<<<<<<<<<<<< @@ -54266,7 +54977,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */      __pyx_v_f_i = (__pyx_v_sent_links[__pyx_v_i]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1544 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1545   *         while i < num_links*2:   *             f_i = sent_links[i]   *             e_i = sent_links[i+1]             # <<<<<<<<<<<<<< @@ -54275,23 +54986,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */      __pyx_v_e_i = (__pyx_v_sent_links[(__pyx_v_i + 1)]); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1545 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1546   *             f_i = sent_links[i]   *             e_i = sent_links[i+1]   *             if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:             # <<<<<<<<<<<<<<   *                 f_links_low[f_i] = e_i   *             if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:   */ -    __pyx_t_7 = ((__pyx_v_f_links_low[__pyx_v_f_i]) == -1); +    __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_i]) == -1) != 0);      if (!__pyx_t_7) { -      __pyx_t_8 = ((__pyx_v_f_links_low[__pyx_v_f_i]) > __pyx_v_e_i); +      __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_i]) > __pyx_v_e_i) != 0);        __pyx_t_9 = __pyx_t_8;      } else {        __pyx_t_9 = __pyx_t_7;      }      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1546 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1547   *             e_i = sent_links[i+1]   *             if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:   *                 f_links_low[f_i] = e_i             # <<<<<<<<<<<<<< @@ -54303,23 +55014,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      __pyx_L14:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1547 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1548   *             if f_links_low[f_i] == -1 or f_links_low[f_i] > e_i:   *                 f_links_low[f_i] = e_i   *             if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:             # <<<<<<<<<<<<<<   *                 f_links_high[f_i] = e_i + 1   *             if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:   */ -    __pyx_t_9 = ((__pyx_v_f_links_high[__pyx_v_f_i]) == -1); +    __pyx_t_9 = (((__pyx_v_f_links_high[__pyx_v_f_i]) == -1) != 0);      if (!__pyx_t_9) { -      __pyx_t_7 = ((__pyx_v_f_links_high[__pyx_v_f_i]) < (__pyx_v_e_i + 1)); +      __pyx_t_7 = (((__pyx_v_f_links_high[__pyx_v_f_i]) < (__pyx_v_e_i + 1)) != 0);        __pyx_t_8 = __pyx_t_7;      } else {        __pyx_t_8 = __pyx_t_9;      }      if (__pyx_t_8) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1548 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1549   *                 f_links_low[f_i] = e_i   *             if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:   *                 f_links_high[f_i] = e_i + 1             # <<<<<<<<<<<<<< @@ -54331,23 +55042,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      __pyx_L15:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1549 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1550   *             if f_links_high[f_i] == -1 or f_links_high[f_i] < e_i + 1:   *                 f_links_high[f_i] = e_i + 1   *             if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:             # <<<<<<<<<<<<<<   *                 e_links_low[e_i] = f_i   *             if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:   */ -    __pyx_t_8 = ((__pyx_v_e_links_low[__pyx_v_e_i]) == -1); +    __pyx_t_8 = (((__pyx_v_e_links_low[__pyx_v_e_i]) == -1) != 0);      if (!__pyx_t_8) { -      __pyx_t_9 = ((__pyx_v_e_links_low[__pyx_v_e_i]) > __pyx_v_f_i); +      __pyx_t_9 = (((__pyx_v_e_links_low[__pyx_v_e_i]) > __pyx_v_f_i) != 0);        __pyx_t_7 = __pyx_t_9;      } else {        __pyx_t_7 = __pyx_t_8;      }      if (__pyx_t_7) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1550 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1551   *                 f_links_high[f_i] = e_i + 1   *             if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:   *                 e_links_low[e_i] = f_i             # <<<<<<<<<<<<<< @@ -54359,23 +55070,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      __pyx_L16:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1551 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1552   *             if e_links_low[e_i] == -1 or e_links_low[e_i] > f_i:   *                 e_links_low[e_i] = f_i   *             if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:             # <<<<<<<<<<<<<<   *                 e_links_high[e_i] = f_i + 1   *             i = i + 2   */ -    __pyx_t_7 = ((__pyx_v_e_links_high[__pyx_v_e_i]) == -1); +    __pyx_t_7 = (((__pyx_v_e_links_high[__pyx_v_e_i]) == -1) != 0);      if (!__pyx_t_7) { -      __pyx_t_8 = ((__pyx_v_e_links_high[__pyx_v_e_i]) < (__pyx_v_f_i + 1)); +      __pyx_t_8 = (((__pyx_v_e_links_high[__pyx_v_e_i]) < (__pyx_v_f_i + 1)) != 0);        __pyx_t_9 = __pyx_t_8;      } else {        __pyx_t_9 = __pyx_t_7;      }      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1552 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1553   *                 e_links_low[e_i] = f_i   *             if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:   *                 e_links_high[e_i] = f_i + 1             # <<<<<<<<<<<<<< @@ -54387,7 +55098,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      __pyx_L17:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1553 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1554   *             if e_links_high[e_i] == -1 or e_links_high[e_i] < f_i + 1:   *                 e_links_high[e_i] = f_i + 1   *             i = i + 2             # <<<<<<<<<<<<<< @@ -54397,63 +55108,63 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      __pyx_v_i = (__pyx_v_i + 2);    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1555 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1556   *             i = i + 2   *    *         als = []             # <<<<<<<<<<<<<<   *         for x in range(matching.start,matching.end):   *             al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])   */ -  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); -  __pyx_v_als = __pyx_t_2; -  __pyx_t_2 = 0; +  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_3); +  __pyx_v_als = ((PyObject*)__pyx_t_3); +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1556 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1557   *    *         als = []   *         for x in range(matching.start,matching.end):             # <<<<<<<<<<<<<<   *             al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])   *             als.append(al)   */ -  __pyx_t_3 = __pyx_v_matching->end; -  for (__pyx_t_4 = __pyx_v_matching->start; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { +  __pyx_t_2 = __pyx_v_matching->end; +  for (__pyx_t_4 = __pyx_v_matching->start; __pyx_t_4 < __pyx_t_2; __pyx_t_4+=1) {      __pyx_v_x = __pyx_t_4; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1557 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1558   *         als = []   *         for x in range(matching.start,matching.end):   *             al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])             # <<<<<<<<<<<<<<   *             als.append(al)   *         # check all source-side alignment constraints   */ -    __pyx_t_2 = PyInt_FromLong(((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyInt_FromLong((__pyx_v_f_links_low[((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyInt_FromLong(((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_1 = PyInt_FromLong((__pyx_v_f_links_low[((__pyx_v_matching->arr[__pyx_v_x]) - __pyx_v_f_sent_start)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10); -    PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); +    PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); +    __Pyx_GIVEREF(__pyx_t_3);      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1);      __Pyx_GIVEREF(__pyx_t_1); -    __pyx_t_2 = 0; +    __pyx_t_3 = 0;      __pyx_t_1 = 0;      __Pyx_XDECREF(((PyObject *)__pyx_v_al)); -    __pyx_v_al = __pyx_t_10; +    __pyx_v_al = ((PyObject*)__pyx_t_10);      __pyx_t_10 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1558 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1559   *         for x in range(matching.start,matching.end):   *             al = (matching.arr[x]-f_sent_start,f_links_low[matching.arr[x]-f_sent_start])   *             als.append(al)             # <<<<<<<<<<<<<<   *         # check all source-side alignment constraints   *         met_constraints = 1   */ -    __pyx_t_11 = PyList_Append(__pyx_v_als, ((PyObject *)__pyx_v_al)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_als, ((PyObject *)__pyx_v_al)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1560 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1561   *             als.append(al)   *         # check all source-side alignment constraints   *         met_constraints = 1             # <<<<<<<<<<<<<< @@ -54462,16 +55173,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_met_constraints = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1561 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1562   *         # check all source-side alignment constraints   *         met_constraints = 1   *         if self.require_aligned_terminal:             # <<<<<<<<<<<<<<   *             num_aligned_chunks = 0   *             for i from 0 <= i < num_chunks:   */ -  if (__pyx_v_self->require_aligned_terminal) { +  __pyx_t_9 = (__pyx_v_self->require_aligned_terminal != 0); +  if (__pyx_t_9) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1562 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1563   *         met_constraints = 1   *         if self.require_aligned_terminal:   *             num_aligned_chunks = 0             # <<<<<<<<<<<<<< @@ -54480,17 +55192,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */      __pyx_v_num_aligned_chunks = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1563 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1564   *         if self.require_aligned_terminal:   *             num_aligned_chunks = 0   *             for i from 0 <= i < num_chunks:             # <<<<<<<<<<<<<<   *                 for j from 0 <= j < chunklen[i]:   *                     if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:   */ -    __pyx_t_3 = __pyx_v_num_chunks; -    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { +    __pyx_t_2 = __pyx_v_num_chunks; +    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1564 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1565   *             num_aligned_chunks = 0   *             for i from 0 <= i < num_chunks:   *                 for j from 0 <= j < chunklen[i]:             # <<<<<<<<<<<<<< @@ -54500,17 +55212,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        __pyx_t_4 = (__pyx_v_chunklen[__pyx_v_i]);        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1565 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1566   *             for i from 0 <= i < num_chunks:   *                 for j from 0 <= j < chunklen[i]:   *                     if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:             # <<<<<<<<<<<<<<   *                         num_aligned_chunks = num_aligned_chunks + 1   *                         break   */ -        __pyx_t_9 = ((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)]) > -1); +        __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + __pyx_v_j) - __pyx_v_f_sent_start)]) > -1) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1566 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1567   *                 for j from 0 <= j < chunklen[i]:   *                     if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:   *                         num_aligned_chunks = num_aligned_chunks + 1             # <<<<<<<<<<<<<< @@ -54519,7 +55231,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */            __pyx_v_num_aligned_chunks = (__pyx_v_num_aligned_chunks + 1); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1567 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1568   *                     if f_links_low[matching.arr[matching.start+i]+j-f_sent_start] > -1:   *                         num_aligned_chunks = num_aligned_chunks + 1   *                         break             # <<<<<<<<<<<<<< @@ -54534,28 +55246,28 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        __pyx_L24_break:;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1568 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1569   *                         num_aligned_chunks = num_aligned_chunks + 1   *                         break   *             if num_aligned_chunks == 0:             # <<<<<<<<<<<<<<   *                 reason_for_failure = "No aligned terminals"   *                 met_constraints = 0   */ -    __pyx_t_9 = (__pyx_v_num_aligned_chunks == 0); +    __pyx_t_9 = ((__pyx_v_num_aligned_chunks == 0) != 0);      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1569 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1570   *                         break   *             if num_aligned_chunks == 0:   *                 reason_for_failure = "No aligned terminals"             # <<<<<<<<<<<<<<   *                 met_constraints = 0   *             if self.require_aligned_chunks and num_aligned_chunks < num_chunks:   */ -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_127)); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_132));        __Pyx_DECREF(__pyx_v_reason_for_failure); -      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_127); +      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_132); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1570 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1571   *             if num_aligned_chunks == 0:   *                 reason_for_failure = "No aligned terminals"   *                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -54567,33 +55279,33 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      __pyx_L26:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1571 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1572   *                 reason_for_failure = "No aligned terminals"   *                 met_constraints = 0   *             if self.require_aligned_chunks and num_aligned_chunks < num_chunks:             # <<<<<<<<<<<<<<   *                 reason_for_failure = "Unaligned chunk"   *                 met_constraints = 0   */ -    if (__pyx_v_self->require_aligned_chunks) { -      __pyx_t_9 = (__pyx_v_num_aligned_chunks < __pyx_v_num_chunks); +    if ((__pyx_v_self->require_aligned_chunks != 0)) { +      __pyx_t_9 = ((__pyx_v_num_aligned_chunks < __pyx_v_num_chunks) != 0);        __pyx_t_7 = __pyx_t_9;      } else { -      __pyx_t_7 = __pyx_v_self->require_aligned_chunks; +      __pyx_t_7 = (__pyx_v_self->require_aligned_chunks != 0);      }      if (__pyx_t_7) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1572 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1573   *                 met_constraints = 0   *             if self.require_aligned_chunks and num_aligned_chunks < num_chunks:   *                 reason_for_failure = "Unaligned chunk"             # <<<<<<<<<<<<<<   *                 met_constraints = 0   *    */ -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_128)); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_133));        __Pyx_DECREF(__pyx_v_reason_for_failure); -      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_128); +      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_133); -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1573 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1574   *             if self.require_aligned_chunks and num_aligned_chunks < num_chunks:   *                 reason_for_failure = "Unaligned chunk"   *                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -54608,22 +55320,22 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    }    __pyx_L20:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1575 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1576   *                 met_constraints = 0   *    *         if met_constraints and self.tight_phrases:             # <<<<<<<<<<<<<<   *             # outside edge constraints are checked later   *             for i from 0 <= i < num_chunks-1:   */ -  if (__pyx_v_met_constraints) { +  if ((__pyx_v_met_constraints != 0)) {      __pyx_t_7 = __pyx_v_self->tight_phrases;      __pyx_t_9 = __pyx_t_7;    } else { -    __pyx_t_9 = __pyx_v_met_constraints; +    __pyx_t_9 = (__pyx_v_met_constraints != 0);    }    if (__pyx_t_9) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1577 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1578   *         if met_constraints and self.tight_phrases:   *             # outside edge constraints are checked later   *             for i from 0 <= i < num_chunks-1:             # <<<<<<<<<<<<<< @@ -54633,28 +55345,28 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      __pyx_t_12 = (__pyx_v_num_chunks - 1);      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_12; __pyx_v_i++) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1578 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1579   *             # outside edge constraints are checked later   *             for i from 0 <= i < num_chunks-1:   *                 if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:             # <<<<<<<<<<<<<<   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0   */ -      __pyx_t_9 = ((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + (__pyx_v_chunklen[__pyx_v_i])) - __pyx_v_f_sent_start)]) == -1); +      __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + (__pyx_v_chunklen[__pyx_v_i])) - __pyx_v_f_sent_start)]) == -1) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1579 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1580   *             for i from 0 <= i < num_chunks-1:   *                 if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:   *                     reason_for_failure = "Gaps are not tight phrases"             # <<<<<<<<<<<<<<   *                     met_constraints = 0   *                     break   */ -        __Pyx_INCREF(((PyObject *)__pyx_kp_s_129)); +        __Pyx_INCREF(((PyObject *)__pyx_kp_s_134));          __Pyx_DECREF(__pyx_v_reason_for_failure); -        __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_129); +        __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_134); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1580 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1581   *                 if f_links_low[matching.arr[matching.start+i]+chunklen[i]-f_sent_start] == -1:   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0             # <<<<<<<<<<<<<< @@ -54663,7 +55375,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_met_constraints = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1581 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1582   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0   *                     break             # <<<<<<<<<<<<<< @@ -54675,28 +55387,28 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        __pyx_L31:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1582 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1583   *                     met_constraints = 0   *                     break   *                 if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:             # <<<<<<<<<<<<<<   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0   */ -      __pyx_t_9 = ((__pyx_v_f_links_low[(((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_i) + 1)]) - 1) - __pyx_v_f_sent_start)]) == -1); +      __pyx_t_9 = (((__pyx_v_f_links_low[(((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_i) + 1)]) - 1) - __pyx_v_f_sent_start)]) == -1) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1583 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1584   *                     break   *                 if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:   *                     reason_for_failure = "Gaps are not tight phrases"             # <<<<<<<<<<<<<<   *                     met_constraints = 0   *                     break   */ -        __Pyx_INCREF(((PyObject *)__pyx_kp_s_129)); +        __Pyx_INCREF(((PyObject *)__pyx_kp_s_134));          __Pyx_DECREF(__pyx_v_reason_for_failure); -        __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_129); +        __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_134); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1584 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1585   *                 if f_links_low[matching.arr[matching.start+i+1]-1-f_sent_start] == -1:   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0             # <<<<<<<<<<<<<< @@ -54705,7 +55417,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_met_constraints = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1585 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1586   *                     reason_for_failure = "Gaps are not tight phrases"   *                     met_constraints = 0   *                     break             # <<<<<<<<<<<<<< @@ -54722,7 +55434,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    }    __pyx_L28:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1587 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1588   *                     break   *    *         f_low = matching.arr[matching.start] - f_sent_start             # <<<<<<<<<<<<<< @@ -54731,7 +55443,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_low = ((__pyx_v_matching->arr[__pyx_v_matching->start]) - __pyx_v_f_sent_start); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1588 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1589   *    *         f_low = matching.arr[matching.start] - f_sent_start   *         f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start             # <<<<<<<<<<<<<< @@ -54740,37 +55452,38 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    __pyx_v_f_high = (((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_matching->size) - 1)]) + (__pyx_v_chunklen[(__pyx_v_num_chunks - 1)])) - __pyx_v_f_sent_start); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1589 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1590   *         f_low = matching.arr[matching.start] - f_sent_start   *         f_high = matching.arr[matching.start + matching.size - 1] + chunklen[num_chunks-1] - f_sent_start   *         if met_constraints:             # <<<<<<<<<<<<<<   *    *             if self.find_fixpoint(f_low, f_high, f_links_low, f_links_high, e_links_low, e_links_high,   */ -  if (__pyx_v_met_constraints) { +  __pyx_t_9 = (__pyx_v_met_constraints != 0); +  if (__pyx_t_9) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1591 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1592   *         if met_constraints:   *    *             if self.find_fixpoint(f_low, f_high, f_links_low, f_links_high, e_links_low, e_links_high,             # <<<<<<<<<<<<<<   *                                 -1, -1, &e_low, &e_high, &f_back_low, &f_back_high, f_sent_len, e_sent_len,   *                                 self.train_max_initial_size, self.train_max_initial_size,   */ -    __pyx_t_10 = PyInt_FromLong(__pyx_v_f_high); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyInt_FromLong(__pyx_v_f_high); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_10); -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1595 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1596   *                                 self.train_max_initial_size, self.train_max_initial_size,   *                                 self.train_min_gap_size, 0,   *                                 self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):             # <<<<<<<<<<<<<<   *                 gap_error = 0   *                 num_gaps = 0   */ -    __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_low, __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, (&__pyx_v_e_low), (&__pyx_v_e_high), (&__pyx_v_f_back_low), (&__pyx_v_f_back_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_min_gap_size, 0, ((__pyx_v_self->max_nonterminals - __pyx_v_num_chunks) + 1), 1, 1, 0, 0); +    __pyx_t_9 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_low, __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, (&__pyx_v_e_low), (&__pyx_v_e_high), (&__pyx_v_f_back_low), (&__pyx_v_f_back_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_min_gap_size, 0, ((__pyx_v_self->max_nonterminals - __pyx_v_num_chunks) + 1), 1, 1, 0, 0) != 0);      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -    if (__pyx_t_3) { +    if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1596 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1597   *                                 self.train_min_gap_size, 0,   *                                 self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):   *                 gap_error = 0             # <<<<<<<<<<<<<< @@ -54779,7 +55492,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */        __pyx_v_gap_error = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1597 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1598   *                                 self.max_nonterminals - num_chunks + 1, 1, 1, 0, 0):   *                 gap_error = 0   *                 num_gaps = 0             # <<<<<<<<<<<<<< @@ -54788,17 +55501,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */        __pyx_v_num_gaps = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1599 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1600   *                 num_gaps = 0   *    *                 if f_back_low < f_low:             # <<<<<<<<<<<<<<   *                     f_gap_low[0] = f_back_low   *                     f_gap_high[0] = f_low   */ -      __pyx_t_9 = (__pyx_v_f_back_low < __pyx_v_f_low); +      __pyx_t_9 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1600 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1601   *    *                 if f_back_low < f_low:   *                     f_gap_low[0] = f_back_low             # <<<<<<<<<<<<<< @@ -54807,7 +55520,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_low[0]) = __pyx_v_f_back_low; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1601 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1602   *                 if f_back_low < f_low:   *                     f_gap_low[0] = f_back_low   *                     f_gap_high[0] = f_low             # <<<<<<<<<<<<<< @@ -54816,7 +55529,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_high[0]) = __pyx_v_f_low; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1602 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1603   *                     f_gap_low[0] = f_back_low   *                     f_gap_high[0] = f_low   *                     num_gaps = 1             # <<<<<<<<<<<<<< @@ -54825,7 +55538,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_num_gaps = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1603 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1604   *                     f_gap_high[0] = f_low   *                     num_gaps = 1   *                     gap_start = 0             # <<<<<<<<<<<<<< @@ -54834,7 +55547,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_gap_start = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1604 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1605   *                     num_gaps = 1   *                     gap_start = 0   *                     phrase_len = phrase_len+1             # <<<<<<<<<<<<<< @@ -54843,17 +55556,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_phrase_len = (__pyx_v_phrase_len + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1605 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1606   *                     gap_start = 0   *                     phrase_len = phrase_len+1   *                     if phrase_len > self.max_length:             # <<<<<<<<<<<<<<   *                         gap_error = 1   *                     if self.tight_phrases:   */ -        __pyx_t_9 = (__pyx_v_phrase_len > __pyx_v_self->max_length); +        __pyx_t_9 = ((__pyx_v_phrase_len > __pyx_v_self->max_length) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1606 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1607   *                     phrase_len = phrase_len+1   *                     if phrase_len > self.max_length:   *                         gap_error = 1             # <<<<<<<<<<<<<< @@ -54865,32 +55578,33 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj          }          __pyx_L36:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1607 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1608   *                     if phrase_len > self.max_length:   *                         gap_error = 1   *                     if self.tight_phrases:             # <<<<<<<<<<<<<<   *                         if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:   *                             gap_error = 1   */ -        if (__pyx_v_self->tight_phrases) { +        __pyx_t_9 = (__pyx_v_self->tight_phrases != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1608 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1609   *                         gap_error = 1   *                     if self.tight_phrases:   *                         if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:             # <<<<<<<<<<<<<<   *                             gap_error = 1   *                             reason_for_failure = "Inside edges of preceding subphrase are not tight"   */ -          __pyx_t_9 = ((__pyx_v_f_links_low[__pyx_v_f_back_low]) == -1); +          __pyx_t_9 = (((__pyx_v_f_links_low[__pyx_v_f_back_low]) == -1) != 0);            if (!__pyx_t_9) { -            __pyx_t_7 = ((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) == -1); +            __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) == -1) != 0);              __pyx_t_8 = __pyx_t_7;            } else {              __pyx_t_8 = __pyx_t_9;            }            if (__pyx_t_8) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1609 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1610   *                     if self.tight_phrases:   *                         if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:   *                             gap_error = 1             # <<<<<<<<<<<<<< @@ -54899,16 +55613,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_gap_error = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1610 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1611   *                         if f_links_low[f_back_low] == -1 or f_links_low[f_low-1] == -1:   *                             gap_error = 1   *                             reason_for_failure = "Inside edges of preceding subphrase are not tight"             # <<<<<<<<<<<<<<   *                 else:   *                     gap_start = 1   */ -            __Pyx_INCREF(((PyObject *)__pyx_kp_s_130)); +            __Pyx_INCREF(((PyObject *)__pyx_kp_s_135));              __Pyx_DECREF(__pyx_v_reason_for_failure); -            __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_130); +            __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_135);              goto __pyx_L38;            }            __pyx_L38:; @@ -54919,7 +55633,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1612 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1613   *                             reason_for_failure = "Inside edges of preceding subphrase are not tight"   *                 else:   *                     gap_start = 1             # <<<<<<<<<<<<<< @@ -54928,22 +55642,22 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_gap_start = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1613 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1614   *                 else:   *                     gap_start = 1   *                     if self.tight_phrases and f_links_low[f_low] == -1:             # <<<<<<<<<<<<<<   *                         # this is not a hard error.    we can't extract this phrase   *                         # but we still might be able to extract a superphrase   */ -        if (__pyx_v_self->tight_phrases) { -          __pyx_t_8 = ((__pyx_v_f_links_low[__pyx_v_f_low]) == -1); +        if ((__pyx_v_self->tight_phrases != 0)) { +          __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_low]) == -1) != 0);            __pyx_t_9 = __pyx_t_8;          } else { -          __pyx_t_9 = __pyx_v_self->tight_phrases; +          __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);          }          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1616 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1617   *                         # this is not a hard error.    we can't extract this phrase   *                         # but we still might be able to extract a superphrase   *                         met_constraints = 0             # <<<<<<<<<<<<<< @@ -54957,7 +55671,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        __pyx_L35:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1618 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1619   *                         met_constraints = 0   *    *                 for i from 0 <= i < matching.size - 1:             # <<<<<<<<<<<<<< @@ -54967,7 +55681,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        __pyx_t_12 = (__pyx_v_matching->size - 1);        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_12; __pyx_v_i++) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1619 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1620   *    *                 for i from 0 <= i < matching.size - 1:   *                     f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start             # <<<<<<<<<<<<<< @@ -54976,7 +55690,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_low[(1 + __pyx_v_i)]) = (((__pyx_v_matching->arr[(__pyx_v_matching->start + __pyx_v_i)]) + (__pyx_v_chunklen[__pyx_v_i])) - __pyx_v_f_sent_start); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1620 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1621   *                 for i from 0 <= i < matching.size - 1:   *                     f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start   *                     f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start             # <<<<<<<<<<<<<< @@ -54985,7 +55699,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_high[(1 + __pyx_v_i)]) = ((__pyx_v_matching->arr[((__pyx_v_matching->start + __pyx_v_i) + 1)]) - __pyx_v_f_sent_start); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1621 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1622   *                     f_gap_low[1+i] = matching.arr[matching.start+i] + chunklen[i] - f_sent_start   *                     f_gap_high[1+i] = matching.arr[matching.start+i+1] - f_sent_start   *                     num_gaps = num_gaps + 1             # <<<<<<<<<<<<<< @@ -54995,17 +55709,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj          __pyx_v_num_gaps = (__pyx_v_num_gaps + 1);        } -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1623 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1624   *                     num_gaps = num_gaps + 1   *    *                 if f_high < f_back_high:             # <<<<<<<<<<<<<<   *                     f_gap_low[gap_start+num_gaps] = f_high   *                     f_gap_high[gap_start+num_gaps] = f_back_high   */ -      __pyx_t_9 = (__pyx_v_f_high < __pyx_v_f_back_high); +      __pyx_t_9 = ((__pyx_v_f_high < __pyx_v_f_back_high) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1624 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1625   *    *                 if f_high < f_back_high:   *                     f_gap_low[gap_start+num_gaps] = f_high             # <<<<<<<<<<<<<< @@ -55014,7 +55728,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_num_gaps)]) = __pyx_v_f_high; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1625 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1626   *                 if f_high < f_back_high:   *                     f_gap_low[gap_start+num_gaps] = f_high   *                     f_gap_high[gap_start+num_gaps] = f_back_high             # <<<<<<<<<<<<<< @@ -55023,7 +55737,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          (__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_num_gaps)]) = __pyx_v_f_back_high; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1626 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1627   *                     f_gap_low[gap_start+num_gaps] = f_high   *                     f_gap_high[gap_start+num_gaps] = f_back_high   *                     num_gaps = num_gaps + 1             # <<<<<<<<<<<<<< @@ -55032,7 +55746,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_num_gaps = (__pyx_v_num_gaps + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1627 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1628   *                     f_gap_high[gap_start+num_gaps] = f_back_high   *                     num_gaps = num_gaps + 1   *                     phrase_len = phrase_len+1             # <<<<<<<<<<<<<< @@ -55041,17 +55755,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_phrase_len = (__pyx_v_phrase_len + 1); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1628 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1629   *                     num_gaps = num_gaps + 1   *                     phrase_len = phrase_len+1   *                     if phrase_len > self.max_length:             # <<<<<<<<<<<<<<   *                         gap_error = 1   *                     if self.tight_phrases:   */ -        __pyx_t_9 = (__pyx_v_phrase_len > __pyx_v_self->max_length); +        __pyx_t_9 = ((__pyx_v_phrase_len > __pyx_v_self->max_length) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1629 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1630   *                     phrase_len = phrase_len+1   *                     if phrase_len > self.max_length:   *                         gap_error = 1             # <<<<<<<<<<<<<< @@ -55063,32 +55777,33 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj          }          __pyx_L43:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1630 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1631   *                     if phrase_len > self.max_length:   *                         gap_error = 1   *                     if self.tight_phrases:             # <<<<<<<<<<<<<<   *                         if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:   *                             gap_error = 1   */ -        if (__pyx_v_self->tight_phrases) { +        __pyx_t_9 = (__pyx_v_self->tight_phrases != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1631 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1632   *                         gap_error = 1   *                     if self.tight_phrases:   *                         if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:             # <<<<<<<<<<<<<<   *                             gap_error = 1   *                             reason_for_failure = "Inside edges of following subphrase are not tight"   */ -          __pyx_t_9 = ((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) == -1); +          __pyx_t_9 = (((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) == -1) != 0);            if (!__pyx_t_9) { -            __pyx_t_8 = ((__pyx_v_f_links_low[__pyx_v_f_high]) == -1); +            __pyx_t_8 = (((__pyx_v_f_links_low[__pyx_v_f_high]) == -1) != 0);              __pyx_t_7 = __pyx_t_8;            } else {              __pyx_t_7 = __pyx_t_9;            }            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1632 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1633   *                     if self.tight_phrases:   *                         if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:   *                             gap_error = 1             # <<<<<<<<<<<<<< @@ -55097,16 +55812,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_gap_error = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1633 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1634   *                         if f_links_low[f_back_high-1] == -1 or f_links_low[f_high] == -1:   *                             gap_error = 1   *                             reason_for_failure = "Inside edges of following subphrase are not tight"             # <<<<<<<<<<<<<<   *                 else:   *                     if self.tight_phrases and f_links_low[f_high-1] == -1:   */ -            __Pyx_INCREF(((PyObject *)__pyx_kp_s_131)); +            __Pyx_INCREF(((PyObject *)__pyx_kp_s_136));              __Pyx_DECREF(__pyx_v_reason_for_failure); -            __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_131); +            __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_136);              goto __pyx_L45;            }            __pyx_L45:; @@ -55117,22 +55832,22 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        /*else*/ { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1635 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1636   *                             reason_for_failure = "Inside edges of following subphrase are not tight"   *                 else:   *                     if self.tight_phrases and f_links_low[f_high-1] == -1:             # <<<<<<<<<<<<<<   *                         met_constraints = 0   *    */ -        if (__pyx_v_self->tight_phrases) { -          __pyx_t_7 = ((__pyx_v_f_links_low[(__pyx_v_f_high - 1)]) == -1); +        if ((__pyx_v_self->tight_phrases != 0)) { +          __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_high - 1)]) == -1) != 0);            __pyx_t_9 = __pyx_t_7;          } else { -          __pyx_t_9 = __pyx_v_self->tight_phrases; +          __pyx_t_9 = (__pyx_v_self->tight_phrases != 0);          }          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1636 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1637   *                 else:   *                     if self.tight_phrases and f_links_low[f_high-1] == -1:   *                         met_constraints = 0             # <<<<<<<<<<<<<< @@ -55146,17 +55861,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        __pyx_L42:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1638 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1639   *                         met_constraints = 0   *    *                 if gap_error == 0:             # <<<<<<<<<<<<<<   *                     e_word_count = e_high - e_low   *                     for i from 0 <= i < num_gaps: # check integrity of subphrases   */ -      __pyx_t_9 = (__pyx_v_gap_error == 0); +      __pyx_t_9 = ((__pyx_v_gap_error == 0) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1639 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1640   *    *                 if gap_error == 0:   *                     e_word_count = e_high - e_low             # <<<<<<<<<<<<<< @@ -55165,38 +55880,38 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_e_word_count = (__pyx_v_e_high - __pyx_v_e_low); -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1640 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1641   *                 if gap_error == 0:   *                     e_word_count = e_high - e_low   *                     for i from 0 <= i < num_gaps: # check integrity of subphrases             # <<<<<<<<<<<<<<   *                         if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i],   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   */ -        __pyx_t_3 = __pyx_v_num_gaps; -        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) { +        __pyx_t_2 = __pyx_v_num_gaps; +        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1641 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1642   *                     e_word_count = e_high - e_low   *                     for i from 0 <= i < num_gaps: # check integrity of subphrases   *                         if self.find_fixpoint(f_gap_low[gap_start+i], f_gap_high[gap_start+i],             # <<<<<<<<<<<<<<   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   *                                             -1, -1, e_gap_low+gap_start+i, e_gap_high+gap_start+i,   */ -          __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1646 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1647   *                                             f_gap_low+gap_start+i, f_gap_high+gap_start+i,   *                                             f_sent_len, e_sent_len,   *                                             self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                             0, 0, 0, 0, 0, 0, 0) == 0:   *                             gap_error = 1   */ -          __pyx_t_9 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, (__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)]), __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_i), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) == 0); +          __pyx_t_9 = ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, (__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)]), __pyx_t_10, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_i), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_i), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) == 0) != 0);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1648 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1649   *                                             self.train_max_initial_size, self.train_max_initial_size,   *                                             0, 0, 0, 0, 0, 0, 0) == 0:   *                             gap_error = 1             # <<<<<<<<<<<<<< @@ -55205,33 +55920,33 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_gap_error = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1649 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1650   *                                             0, 0, 0, 0, 0, 0, 0) == 0:   *                             gap_error = 1   *                             reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i])             # <<<<<<<<<<<<<<   *                             break   *    */ -            __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = PyInt_FromLong((__pyx_v_f_gap_low[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_1 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = PyInt_FromLong((__pyx_v_f_gap_high[(__pyx_v_gap_start + __pyx_v_i)])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __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 = 1649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_2); -            PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); +            __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_3); +            PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10); -            PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); +            PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);              __Pyx_GIVEREF(__pyx_t_1);              __pyx_t_10 = 0;              __pyx_t_1 = 0; -            __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_132), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1649; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_137), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_1)); -            __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +            __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;              __Pyx_DECREF(__pyx_v_reason_for_failure);              __pyx_v_reason_for_failure = ((PyObject *)__pyx_t_1);              __pyx_t_1 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1650 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1651   *                             gap_error = 1   *                             reason_for_failure = "Subphrase [%d, %d] failed integrity check" % (f_gap_low[gap_start+i], f_gap_high[gap_start+i])   *                             break             # <<<<<<<<<<<<<< @@ -55248,17 +55963,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj        }        __pyx_L47:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1652 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1653   *                             break   *    *                 if gap_error == 0:             # <<<<<<<<<<<<<<   *                     i = 1   *                     self.findexes.reset()   */ -      __pyx_t_9 = (__pyx_v_gap_error == 0); +      __pyx_t_9 = ((__pyx_v_gap_error == 0) != 0);        if (__pyx_t_9) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1653 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1654   *    *                 if gap_error == 0:   *                     i = 1             # <<<<<<<<<<<<<< @@ -55267,31 +55982,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */          __pyx_v_i = 1; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1654 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1655   *                 if gap_error == 0:   *                     i = 1   *                     self.findexes.reset()             # <<<<<<<<<<<<<<   *                     if f_back_low < f_low:   *                         fphr_arr._append(sym_setindex(self.category, i))   */ -        __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1655; __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 = 1654; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1655; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1655 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1656   *                     i = 1   *                     self.findexes.reset()   *                     if f_back_low < f_low:             # <<<<<<<<<<<<<<   *                         fphr_arr._append(sym_setindex(self.category, i))   *                         i = i+1   */ -        __pyx_t_9 = (__pyx_v_f_back_low < __pyx_v_f_low); +        __pyx_t_9 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1656 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1657   *                     self.findexes.reset()   *                     if f_back_low < f_low:   *                         fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -55300,7 +56015,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */            ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1657 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1658   *                     if f_back_low < f_low:   *                         fphr_arr._append(sym_setindex(self.category, i))   *                         i = i+1             # <<<<<<<<<<<<<< @@ -55309,64 +56024,64 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */            __pyx_v_i = (__pyx_v_i + 1); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1658 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1659   *                         fphr_arr._append(sym_setindex(self.category, i))   *                         i = i+1   *                         self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                     self.findexes.extend(self.findexes1)   *                     for j from 0 <= j < phrase.n:   */ -          __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_2); -          __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_3 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3); +          __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;            goto __pyx_L52;          }          __pyx_L52:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1659 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1660   *                         i = i+1   *                         self.findexes.append(sym_setindex(self.category, i))   *                     self.findexes.extend(self.findexes1)             # <<<<<<<<<<<<<<   *                     for j from 0 <= j < phrase.n:   *                         if sym_isvar(phrase.syms[j]):   */ -        __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1660; __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 = 1659; __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[8]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3);          __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1)); -        PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self->findexes1)); +        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->findexes1));          __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1)); -        __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1660 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1661   *                         self.findexes.append(sym_setindex(self.category, i))   *                     self.findexes.extend(self.findexes1)   *                     for j from 0 <= j < phrase.n:             # <<<<<<<<<<<<<<   *                         if sym_isvar(phrase.syms[j]):   *                             fphr_arr._append(sym_setindex(self.category, i))   */ -        __pyx_t_3 = __pyx_v_phrase->n; -        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { +        __pyx_t_2 = __pyx_v_phrase->n; +        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1661 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1662   *                     self.findexes.extend(self.findexes1)   *                     for j from 0 <= j < phrase.n:   *                         if sym_isvar(phrase.syms[j]):             # <<<<<<<<<<<<<<   *                             fphr_arr._append(sym_setindex(self.category, i))   *                             i = i + 1   */ -          __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])); -          if (__pyx_t_4) { +          __pyx_t_9 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0); +          if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1662 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1663   *                     for j from 0 <= j < phrase.n:   *                         if sym_isvar(phrase.syms[j]):   *                             fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -55375,7 +56090,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1663 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1664   *                         if sym_isvar(phrase.syms[j]):   *                             fphr_arr._append(sym_setindex(self.category, i))   *                             i = i + 1             # <<<<<<<<<<<<<< @@ -55387,7 +56102,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            /*else*/ { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1665 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1666   *                             i = i + 1   *                         else:   *                             fphr_arr._append(phrase.syms[j])             # <<<<<<<<<<<<<< @@ -55399,17 +56114,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            __pyx_L55:;          } -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1666 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1667   *                         else:   *                             fphr_arr._append(phrase.syms[j])   *                     if f_back_high > f_high:             # <<<<<<<<<<<<<<   *                         fphr_arr._append(sym_setindex(self.category, i))   *                         self.findexes.append(sym_setindex(self.category, i))   */ -        __pyx_t_9 = (__pyx_v_f_back_high > __pyx_v_f_high); +        __pyx_t_9 = ((__pyx_v_f_back_high > __pyx_v_f_high) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1667 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1668   *                             fphr_arr._append(phrase.syms[j])   *                     if f_back_high > f_high:   *                         fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -55418,129 +56133,136 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */            ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1668 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1669   *                     if f_back_high > f_high:   *                         fphr_arr._append(sym_setindex(self.category, i))   *                         self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *    *                     fphr = Phrase(fphr_arr)   */ -          __pyx_t_10 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1668; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10); -          __pyx_t_2 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_10); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1668; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __Pyx_GOTREF(__pyx_t_2); +          __pyx_t_3 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1669; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __Pyx_GOTREF(__pyx_t_3);            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;            goto __pyx_L56;          }          __pyx_L56:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1670 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1671   *                         self.findexes.append(sym_setindex(self.category, i))   *    *                     fphr = Phrase(fphr_arr)             # <<<<<<<<<<<<<<   *                     if met_constraints:   *                         phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,   */ -        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1670; __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[8]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_3);          __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr)); -        PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_fphr_arr)); +        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_fphr_arr));          __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr)); -        __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_10); -        __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;          __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_10);          __pyx_t_10 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1671 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1672   *    *                     fphr = Phrase(fphr_arr)   *                     if met_constraints:             # <<<<<<<<<<<<<<   *                         phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,   *                                             f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,   */ -        if (__pyx_v_met_constraints) { +        __pyx_t_9 = (__pyx_v_met_constraints != 0); +        if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1674 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1675   *                         phrase_list = self.extract_phrases(e_low, e_high, e_gap_low + gap_start, e_gap_high + gap_start, e_links_low, num_gaps,   *                                             f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,   *                                             matching.sent_id, e_sent_len, e_sent_start)             # <<<<<<<<<<<<<<   *                         if len(phrase_list) > 0:   *                             pair_count = 1.0 / len(phrase_list)   */ -          __pyx_t_10 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_low, __pyx_v_e_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, __pyx_v_num_gaps, __pyx_v_f_back_low, __pyx_v_f_back_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_10 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_low, __pyx_v_e_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, __pyx_v_num_gaps, __pyx_v_f_back_low, __pyx_v_f_back_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            __Pyx_GOTREF(__pyx_t_10);            __pyx_v_phrase_list = __pyx_t_10;            __pyx_t_10 = 0; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1675 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1676   *                                             f_back_low, f_back_high, f_gap_low + gap_start, f_gap_high + gap_start, f_links_low,   *                                             matching.sent_id, e_sent_len, e_sent_start)   *                         if len(phrase_list) > 0:             # <<<<<<<<<<<<<<   *                             pair_count = 1.0 / len(phrase_list)   *                         else:   */ -          __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -          __pyx_t_9 = (__pyx_t_13 > 0); +          __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          __pyx_t_9 = ((__pyx_t_13 > 0) != 0);            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1676 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1677   *                                             matching.sent_id, e_sent_len, e_sent_start)   *                         if len(phrase_list) > 0:   *                             pair_count = 1.0 / len(phrase_list)             # <<<<<<<<<<<<<<   *                         else:   *                             pair_count = 0   */ -            __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              if (unlikely(__pyx_t_13 == 0)) { +              #ifdef WITH_THREAD +              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +              #endif                PyErr_Format(PyExc_ZeroDivisionError, "float division"); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #ifdef WITH_THREAD +              PyGILState_Release(__pyx_gilstate_save); +              #endif +              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              }              __pyx_v_pair_count = (1.0 / __pyx_t_13);              goto __pyx_L58;            }            /*else*/ { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1678 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1679   *                             pair_count = 1.0 / len(phrase_list)   *                         else:   *                             pair_count = 0             # <<<<<<<<<<<<<<   *                             reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high) - *                         for (phrase2,eindexes) in phrase_list: + *                         for phrase2, eindexes in phrase_list:   */              __pyx_v_pair_count = 0.0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1679 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1680   *                         else:   *                             pair_count = 0   *                             reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high)             # <<<<<<<<<<<<<< - *                         for (phrase2,eindexes) in phrase_list: + *                         for phrase2, eindexes in phrase_list:   *                             als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   */ -            __pyx_t_10 = PyInt_FromLong(__pyx_v_f_back_low); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_10 = PyInt_FromLong(__pyx_v_f_back_low); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_10); -            __pyx_t_2 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_2); -            __pyx_t_1 = PyInt_FromLong(__pyx_v_e_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_3); +            __pyx_t_1 = PyInt_FromLong(__pyx_v_e_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1); -            __pyx_t_14 = PyInt_FromLong(__pyx_v_e_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_14 = PyInt_FromLong(__pyx_v_e_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_14); -            __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_15);              PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10);              __Pyx_GIVEREF(__pyx_t_10); -            PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_2); -            __Pyx_GIVEREF(__pyx_t_2); +            PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_3); +            __Pyx_GIVEREF(__pyx_t_3);              PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_1);              __Pyx_GIVEREF(__pyx_t_1);              PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_14);              __Pyx_GIVEREF(__pyx_t_14);              __pyx_t_10 = 0; -            __pyx_t_2 = 0; +            __pyx_t_3 = 0;              __pyx_t_1 = 0;              __pyx_t_14 = 0; -            __pyx_t_14 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_133), ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_14 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_138), ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(((PyObject *)__pyx_t_14));              __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;              __Pyx_DECREF(__pyx_v_reason_for_failure); @@ -55549,10 +56271,10 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            __pyx_L58:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1680 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1681   *                             pair_count = 0   *                             reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high) - *                         for (phrase2,eindexes) in phrase_list:             # <<<<<<<<<<<<<< + *                         for phrase2, eindexes in phrase_list:             # <<<<<<<<<<<<<<   *                             als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                             extracts.append((fphr, phrase2, pair_count, tuple(als1)))   */ @@ -55560,23 +56282,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              __pyx_t_14 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_14); __pyx_t_13 = 0;              __pyx_t_16 = NULL;            } else { -            __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_14);              __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext;            }            for (;;) {              if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_14)) {                if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_14)) break; -              __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #else +              __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #endif              } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_14)) {                if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -              __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; +              #if CYTHON_COMPILING_IN_CPYTHON +              __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #else +              __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              #endif              } else {                __pyx_t_15 = __pyx_t_16(__pyx_t_14);                if (unlikely(!__pyx_t_15)) {                  if (PyErr_Occurred()) {                    if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                  else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  }                  break;                } @@ -55584,87 +56314,97 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              if ((likely(PyTuple_CheckExact(__pyx_t_15))) || (PyList_CheckExact(__pyx_t_15))) {                PyObject* sequence = __pyx_t_15; +              #if CYTHON_COMPILING_IN_CPYTHON +              Py_ssize_t size = Py_SIZE(sequence); +              #else +              Py_ssize_t size = PySequence_Size(sequence); +              #endif +              if (unlikely(size != 2)) { +                if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              } +              #if CYTHON_COMPILING_IN_CPYTHON                if (likely(PyTuple_CheckExact(sequence))) { -                if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                  if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                  else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                }                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);  -                __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);  +                __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);                 } else { -                if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                  if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                  else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                }                  __pyx_t_1 = PyList_GET_ITEM(sequence, 0);  -                __pyx_t_2 = PyList_GET_ITEM(sequence, 1);  +                __pyx_t_3 = PyList_GET_ITEM(sequence, 1);                 }                __Pyx_INCREF(__pyx_t_1); -              __Pyx_INCREF(__pyx_t_2); +              __Pyx_INCREF(__pyx_t_3); +              #else +              __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_1); +              __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __Pyx_GOTREF(__pyx_t_3); +              #endif                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -            } else { +            } else +            {                Py_ssize_t index = -1; -              __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_10);                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;                index = 0; __pyx_t_1 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L61_unpacking_failed;                __Pyx_GOTREF(__pyx_t_1); -              index = 1; __pyx_t_2 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L61_unpacking_failed; -              __Pyx_GOTREF(__pyx_t_2); -              if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L61_unpacking_failed; +              __Pyx_GOTREF(__pyx_t_3); +              if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_17 = NULL;                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                goto __pyx_L62_unpacking_done;                __pyx_L61_unpacking_failed:;                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -              if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -              if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_17 = NULL; +              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +              {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __pyx_L62_unpacking_done:;              }              __Pyx_XDECREF(__pyx_v_phrase2);              __pyx_v_phrase2 = __pyx_t_1;              __pyx_t_1 = 0;              __Pyx_XDECREF(__pyx_v_eindexes); -            __pyx_v_eindexes = __pyx_t_2; -            __pyx_t_2 = 0; +            __pyx_v_eindexes = __pyx_t_3; +            __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1681 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1682   *                             reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high) - *                         for (phrase2,eindexes) in phrase_list: + *                         for phrase2, eindexes in phrase_list:   *                             als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)             # <<<<<<<<<<<<<<   *                             extracts.append((fphr, phrase2, pair_count, tuple(als1)))   *                     if (num_gaps < self.max_nonterminals and   */              __pyx_t_15 = ((PyObject *)__pyx_v_self->findexes);              __Pyx_INCREF(__pyx_t_15); -            __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, __pyx_t_15, __pyx_v_eindexes)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1681; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_2); +            if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_15), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_3);              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;              __Pyx_XDECREF(((PyObject *)__pyx_v_als1)); -            __pyx_v_als1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); -            __pyx_t_2 = 0; +            __pyx_v_als1 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); +            __pyx_t_3 = 0; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1682 - *                         for (phrase2,eindexes) in phrase_list: +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1683 + *                         for phrase2, eindexes in phrase_list:   *                             als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                             extracts.append((fphr, phrase2, pair_count, tuple(als1)))             # <<<<<<<<<<<<<<   *                     if (num_gaps < self.max_nonterminals and   *                         phrase_len < self.max_length and   */ -            __pyx_t_2 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -            __Pyx_GOTREF(__pyx_t_2); -            __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __Pyx_GOTREF(__pyx_t_3); +            __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_15);              __Pyx_INCREF(((PyObject *)__pyx_v_als1));              PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_als1));              __Pyx_GIVEREF(((PyObject *)__pyx_v_als1)); -            __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1);              __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -            __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_15);              __Pyx_INCREF(((PyObject *)__pyx_v_fphr));              PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr)); @@ -55672,13 +56412,13 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              __Pyx_INCREF(__pyx_v_phrase2);              PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_phrase2);              __Pyx_GIVEREF(__pyx_v_phrase2); -            PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_2); -            __Pyx_GIVEREF(__pyx_t_2); +            PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_3); +            __Pyx_GIVEREF(__pyx_t_3);              PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_1);              __Pyx_GIVEREF(__pyx_t_1); -            __pyx_t_2 = 0; +            __pyx_t_3 = 0;              __pyx_t_1 = 0; -            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              __Pyx_GOTREF(__pyx_t_1);              __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -55688,34 +56428,34 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj          }          __pyx_L57:; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1683 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1684   *                             als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                             extracts.append((fphr, phrase2, pair_count, tuple(als1)))   *                     if (num_gaps < self.max_nonterminals and             # <<<<<<<<<<<<<<   *                         phrase_len < self.max_length and   *                         f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):   */ -        __pyx_t_9 = (__pyx_v_num_gaps < __pyx_v_self->max_nonterminals); +        __pyx_t_9 = ((__pyx_v_num_gaps < __pyx_v_self->max_nonterminals) != 0);          if (__pyx_t_9) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1684 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1685   *                             extracts.append((fphr, phrase2, pair_count, tuple(als1)))   *                     if (num_gaps < self.max_nonterminals and   *                         phrase_len < self.max_length and             # <<<<<<<<<<<<<<   *                         f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):   *                         if (f_back_low == f_low and   */ -          __pyx_t_7 = (__pyx_v_phrase_len < __pyx_v_self->max_length); +          __pyx_t_7 = ((__pyx_v_phrase_len < __pyx_v_self->max_length) != 0);            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1685 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1686   *                     if (num_gaps < self.max_nonterminals and   *                         phrase_len < self.max_length and   *                         f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):             # <<<<<<<<<<<<<<   *                         if (f_back_low == f_low and   *                                 f_low >= self.train_min_gap_size and   */ -            __pyx_t_8 = (((__pyx_v_f_back_high - __pyx_v_f_back_low) + __pyx_v_self->train_min_gap_size) <= __pyx_v_self->train_max_initial_size); +            __pyx_t_8 = ((((__pyx_v_f_back_high - __pyx_v_f_back_low) + __pyx_v_self->train_min_gap_size) <= __pyx_v_self->train_max_initial_size) != 0);              __pyx_t_18 = __pyx_t_8;            } else {              __pyx_t_18 = __pyx_t_7; @@ -55726,38 +56466,38 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj          }          if (__pyx_t_7) { -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1686 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1687   *                         phrase_len < self.max_length and   *                         f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):   *                         if (f_back_low == f_low and             # <<<<<<<<<<<<<<   *                                 f_low >= self.train_min_gap_size and   *                                 ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):   */ -          __pyx_t_7 = (__pyx_v_f_back_low == __pyx_v_f_low); +          __pyx_t_7 = ((__pyx_v_f_back_low == __pyx_v_f_low) != 0);            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1687 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1688   *                         f_back_high - f_back_low + self.train_min_gap_size <= self.train_max_initial_size):   *                         if (f_back_low == f_low and   *                                 f_low >= self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                                 ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):   *                             f_x_low = f_low-self.train_min_gap_size   */ -            __pyx_t_9 = (__pyx_v_f_low >= __pyx_v_self->train_min_gap_size); +            __pyx_t_9 = ((__pyx_v_f_low >= __pyx_v_self->train_min_gap_size) != 0);              if (__pyx_t_9) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1688 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1689   *                         if (f_back_low == f_low and   *                                 f_low >= self.train_min_gap_size and   *                                 ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):             # <<<<<<<<<<<<<<   *                             f_x_low = f_low-self.train_min_gap_size   *                             met_constraints = 1   */ -              __pyx_t_18 = (!__pyx_v_self->tight_phrases); +              __pyx_t_18 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);                if (!__pyx_t_18) { -                __pyx_t_8 = ((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1); +                __pyx_t_8 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1) != 0);                  if (__pyx_t_8) { -                  __pyx_t_19 = ((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) != -1); +                  __pyx_t_19 = (((__pyx_v_f_links_low[(__pyx_v_f_back_high - 1)]) != -1) != 0);                    __pyx_t_20 = __pyx_t_19;                  } else {                    __pyx_t_20 = __pyx_t_8; @@ -55776,7 +56516,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            if (__pyx_t_9) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1689 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1690   *                                 f_low >= self.train_min_gap_size and   *                                 ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):   *                             f_x_low = f_low-self.train_min_gap_size             # <<<<<<<<<<<<<< @@ -55785,7 +56525,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_f_x_low = (__pyx_v_f_low - __pyx_v_self->train_min_gap_size); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1690 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1691   *                                 ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_back_high-1] != -1))):   *                             f_x_low = f_low-self.train_min_gap_size   *                             met_constraints = 1             # <<<<<<<<<<<<<< @@ -55794,16 +56534,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_met_constraints = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1691 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1692   *                             f_x_low = f_low-self.train_min_gap_size   *                             met_constraints = 1   *                             if self.tight_phrases:             # <<<<<<<<<<<<<<   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1   */ -            if (__pyx_v_self->tight_phrases) { +            __pyx_t_9 = (__pyx_v_self->tight_phrases != 0); +            if (__pyx_t_9) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1692 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1693   *                             met_constraints = 1   *                             if self.tight_phrases:   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:             # <<<<<<<<<<<<<< @@ -55811,16 +56552,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   *                             if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:   */                while (1) { -                __pyx_t_9 = (__pyx_v_f_x_low >= 0); +                __pyx_t_9 = ((__pyx_v_f_x_low >= 0) != 0);                  if (__pyx_t_9) { -                  __pyx_t_7 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1); +                  __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1) != 0);                    __pyx_t_18 = __pyx_t_7;                  } else {                    __pyx_t_18 = __pyx_t_9;                  }                  if (!__pyx_t_18) break; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1693 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1694   *                             if self.tight_phrases:   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1             # <<<<<<<<<<<<<< @@ -55833,23 +56574,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L65:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1694 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1695   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1   *                             if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                                 met_constraints = 0   *    */ -            __pyx_t_18 = (__pyx_v_f_x_low < 0); +            __pyx_t_18 = ((__pyx_v_f_x_low < 0) != 0);              if (!__pyx_t_18) { -              __pyx_t_9 = ((__pyx_v_f_back_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size); +              __pyx_t_9 = (((__pyx_v_f_back_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size) != 0);                __pyx_t_7 = __pyx_t_9;              } else {                __pyx_t_7 = __pyx_t_18;              }              if (__pyx_t_7) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1695 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1696   *                                     f_x_low = f_x_low - 1   *                             if f_x_low < 0 or f_back_high - f_x_low > self.train_max_initial_size:   *                                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -55861,26 +56602,26 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L68:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1697 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1698   *                                 met_constraints = 0   *    *                             if (met_constraints and             # <<<<<<<<<<<<<<   *                                 (self.find_fixpoint(f_x_low, f_back_high,   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   */ -            if (__pyx_v_met_constraints) { +            if ((__pyx_v_met_constraints != 0)) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1698 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1699   *    *                             if (met_constraints and   *                                 (self.find_fixpoint(f_x_low, f_back_high,             # <<<<<<<<<<<<<<   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   *                                             e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   */ -              __pyx_t_14 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyInt_FromLong(__pyx_v_f_back_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1702 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1703   *                                             e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   *                                             f_sent_len, e_sent_len,   *                                             self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<< @@ -55891,14 +56632,14 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                if (__pyx_t_7) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1704 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1705   *                                             self.train_max_initial_size, self.train_max_initial_size,   *                                             1, 1, 1, 1, 0, 1, 0) == 1) and   *                                 ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and             # <<<<<<<<<<<<<<   *                                 self.find_fixpoint(f_x_low, f_low,    # check integrity of new subphrase   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   */ -                __pyx_t_18 = (!__pyx_v_self->tight_phrases); +                __pyx_t_18 = (!(__pyx_v_self->tight_phrases != 0));                  if (!__pyx_t_18) {                    __pyx_t_9 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) != -1);                    __pyx_t_8 = __pyx_t_9; @@ -55907,24 +56648,24 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if (__pyx_t_8) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1705 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1706   *                                             1, 1, 1, 1, 0, 1, 0) == 1) and   *                                 ((not self.tight_phrases) or f_links_low[f_x_low] != -1) and   *                                 self.find_fixpoint(f_x_low, f_low,    # check integrity of new subphrase             # <<<<<<<<<<<<<<   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   *                                             -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,   */ -                  __pyx_t_14 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_14 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_14); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1709 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1710   *                                             -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,   *                                             f_sent_len, e_sent_len,   *                                             self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   */ -                  __pyx_t_18 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0); +                  __pyx_t_18 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);                    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                  } else {                    __pyx_t_18 = __pyx_t_8; @@ -55935,11 +56676,11 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                }                __pyx_t_7 = __pyx_t_8;              } else { -              __pyx_t_7 = __pyx_v_met_constraints; +              __pyx_t_7 = (__pyx_v_met_constraints != 0);              }              if (__pyx_t_7) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1711 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1712   *                                             self.train_max_initial_size, self.train_max_initial_size,   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()             # <<<<<<<<<<<<<< @@ -55948,7 +56689,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1712 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1713   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   *                                 i = 1             # <<<<<<<<<<<<<< @@ -55957,35 +56698,35 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                __pyx_v_i = 1; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1713 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1714   *                                 fphr_arr._clear()   *                                 i = 1   *                                 self.findexes.reset()             # <<<<<<<<<<<<<<   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_14 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1713; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14); -              __pyx_t_1 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1713; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1714 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1715   *                                 i = 1   *                                 self.findexes.reset()   *                                 self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1   */ -              __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1); -              __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1715 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1716   *                                 self.findexes.reset()   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -55994,7 +56735,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1716 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1717   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1             # <<<<<<<<<<<<<< @@ -56003,47 +56744,47 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                __pyx_v_i = (__pyx_v_i + 1); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1717 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1718   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1   *                                 self.findexes.extend(self.findexes1)             # <<<<<<<<<<<<<<   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   */ -              __pyx_t_14 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14); -              __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));                PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->findexes1));                __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1)); -              __pyx_t_15 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1718 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1719   *                                 i = i+1   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:             # <<<<<<<<<<<<<<   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_3 = __pyx_v_phrase->n; -              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { +              __pyx_t_2 = __pyx_v_phrase->n; +              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1719 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1720   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):             # <<<<<<<<<<<<<<   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1   */ -                __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])); -                if (__pyx_t_4) { +                __pyx_t_7 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0); +                if (__pyx_t_7) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1720 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1721   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -56052,7 +56793,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1721 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1722   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1             # <<<<<<<<<<<<<< @@ -56064,7 +56805,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  /*else*/ { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1723 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1724   *                                         i = i + 1   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])             # <<<<<<<<<<<<<< @@ -56076,17 +56817,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_L72:;                } -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1724 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1725   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])   *                                 if f_back_high > f_high:             # <<<<<<<<<<<<<<   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     self.findexes.append(sym_setindex(self.category, i))   */ -              __pyx_t_7 = (__pyx_v_f_back_high > __pyx_v_f_high); +              __pyx_t_7 = ((__pyx_v_f_back_high > __pyx_v_f_high) != 0);                if (__pyx_t_7) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1725 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1726   *                                         fphr_arr._append(phrase.syms[j])   *                                 if f_back_high > f_high:   *                                     fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -56095,16 +56836,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                  ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1726 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1727   *                                 if f_back_high > f_high:   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 fphr = Phrase(fphr_arr)   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,   */ -                __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15); -                __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1726; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -56112,81 +56853,87 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                }                __pyx_L73:; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1727 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1728   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     self.findexes.append(sym_setindex(self.category, i))   *                                 fphr = Phrase(fphr_arr)             # <<<<<<<<<<<<<<   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,   */ -              __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));                PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_fphr_arr));                __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr)); -              __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;                __Pyx_DECREF(((PyObject *)__pyx_v_fphr));                __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_15);                __pyx_t_15 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1730 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1731   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+1,   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,   *                                                     e_sent_len, e_sent_start)             # <<<<<<<<<<<<<<   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)   */ -              __pyx_t_15 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_XDECREF(__pyx_v_phrase_list);                __pyx_v_phrase_list = __pyx_t_15;                __pyx_t_15 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1731 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1732   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low, matching.sent_id,   *                                                     e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:             # <<<<<<<<<<<<<<   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   */ -              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __pyx_t_7 = (__pyx_t_13 > 0); +              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_7 = ((__pyx_t_13 > 0) != 0);                if (__pyx_t_7) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1732 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1733   *                                                     e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)             # <<<<<<<<<<<<<<   *                                 else:   *                                     pair_count = 0   */ -                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  if (unlikely(__pyx_t_13 == 0)) { +                  #ifdef WITH_THREAD +                  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +                  #endif                    PyErr_Format(PyExc_ZeroDivisionError, "float division"); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #ifdef WITH_THREAD +                  PyGILState_Release(__pyx_gilstate_save); +                  #endif +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  }                  __pyx_v_pair_count = (1.0 / __pyx_t_13);                  goto __pyx_L74;                }                /*else*/ { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1734 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1735   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   *                                     pair_count = 0             # <<<<<<<<<<<<<< - *                                 for phrase2,eindexes in phrase_list: + *                                 for phrase2, eindexes in phrase_list:   *                                     als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   */                  __pyx_v_pair_count = 0.0;                }                __pyx_L74:; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1735 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1736   *                                 else:   *                                     pair_count = 0 - *                                 for phrase2,eindexes in phrase_list:             # <<<<<<<<<<<<<< + *                                 for phrase2, eindexes in phrase_list:             # <<<<<<<<<<<<<<   *                                     als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als2)))   */ @@ -56194,23 +56941,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_t_15 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_15); __pyx_t_13 = 0;                  __pyx_t_16 = NULL;                } else { -                __pyx_t_13 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext;                }                for (;;) {                  if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_15)) {                    if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_15)) break; -                  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_1 = PySequence_ITEM(__pyx_t_15, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_15)) {                    if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_15)) break; -                  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_1 = PySequence_ITEM(__pyx_t_15, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else {                    __pyx_t_1 = __pyx_t_16(__pyx_t_15);                    if (unlikely(!__pyx_t_1)) {                      if (PyErr_Occurred()) {                        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                      }                      break;                    } @@ -56218,87 +56973,97 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {                    PyObject* sequence = __pyx_t_1; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  Py_ssize_t size = Py_SIZE(sequence); +                  #else +                  Py_ssize_t size = PySequence_Size(sequence); +                  #endif +                  if (unlikely(size != 2)) { +                    if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                    else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  } +                  #if CYTHON_COMPILING_IN_CPYTHON                    if (likely(PyTuple_CheckExact(sequence))) { -                    if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                      if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);                     } else { -                    if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                      if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_14 = PyList_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyList_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyList_GET_ITEM(sequence, 1);                     }                    __Pyx_INCREF(__pyx_t_14); -                  __Pyx_INCREF(__pyx_t_2); +                  __Pyx_INCREF(__pyx_t_3); +                  #else +                  __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_14); +                  __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_3); +                  #endif                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                } else { +                } else +                {                    Py_ssize_t index = -1; -                  __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_10);                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                    __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;                    index = 0; __pyx_t_14 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_14)) goto __pyx_L77_unpacking_failed;                    __Pyx_GOTREF(__pyx_t_14); -                  index = 1; __pyx_t_2 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L77_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_2); -                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L77_unpacking_failed; +                  __Pyx_GOTREF(__pyx_t_3); +                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                    goto __pyx_L78_unpacking_done;                    __pyx_L77_unpacking_failed:;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -                  if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                  if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL; +                  if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __pyx_L78_unpacking_done:;                  }                  __Pyx_XDECREF(__pyx_v_phrase2);                  __pyx_v_phrase2 = __pyx_t_14;                  __pyx_t_14 = 0;                  __Pyx_XDECREF(__pyx_v_eindexes); -                __pyx_v_eindexes = __pyx_t_2; -                __pyx_t_2 = 0; +                __pyx_v_eindexes = __pyx_t_3; +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1736 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1737   *                                     pair_count = 0 - *                                 for phrase2,eindexes in phrase_list: + *                                 for phrase2, eindexes in phrase_list:   *                                     als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)             # <<<<<<<<<<<<<<   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als2)))   *    */                  __pyx_t_1 = ((PyObject *)__pyx_v_self->findexes);                  __Pyx_INCREF(__pyx_t_1); -                __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, __pyx_t_1, __pyx_v_eindexes)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_2); +                if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_1), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_3);                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                  __Pyx_XDECREF(((PyObject *)__pyx_v_als2)); -                __pyx_v_als2 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); -                __pyx_t_2 = 0; +                __pyx_v_als2 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1737 - *                                 for phrase2,eindexes in phrase_list: +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1738 + *                                 for phrase2, eindexes in phrase_list:   *                                     als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als2)))             # <<<<<<<<<<<<<<   *    *                         if (f_back_high == f_high and   */ -                __pyx_t_2 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __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[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __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[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_INCREF(((PyObject *)__pyx_v_als2));                  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_als2));                  __Pyx_GIVEREF(((PyObject *)__pyx_v_als2)); -                __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -                __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_INCREF(((PyObject *)__pyx_v_fphr));                  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_fphr)); @@ -56306,13 +57071,13 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __Pyx_INCREF(__pyx_v_phrase2);                  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_phrase2);                  __Pyx_GIVEREF(__pyx_v_phrase2); -                PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); -                __Pyx_GIVEREF(__pyx_t_2); +                PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_3); +                __Pyx_GIVEREF(__pyx_t_3);                  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_14);                  __Pyx_GIVEREF(__pyx_t_14); -                __pyx_t_2 = 0; +                __pyx_t_3 = 0;                  __pyx_t_14 = 0; -                __pyx_t_14 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_14 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; @@ -56325,38 +57090,38 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            __pyx_L64:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1739 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1740   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als2)))   *    *                         if (f_back_high == f_high and             # <<<<<<<<<<<<<<   *                             f_sent_len - f_high >= self.train_min_gap_size and   *                             ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):   */ -          __pyx_t_7 = (__pyx_v_f_back_high == __pyx_v_f_high); +          __pyx_t_7 = ((__pyx_v_f_back_high == __pyx_v_f_high) != 0);            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1740 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1741   *    *                         if (f_back_high == f_high and   *                             f_sent_len - f_high >= self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                             ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):   *                             f_x_high = f_high+self.train_min_gap_size   */ -            __pyx_t_8 = ((__pyx_v_f_sent_len - __pyx_v_f_high) >= __pyx_v_self->train_min_gap_size); +            __pyx_t_8 = (((__pyx_v_f_sent_len - __pyx_v_f_high) >= __pyx_v_self->train_min_gap_size) != 0);              if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1741 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1742   *                         if (f_back_high == f_high and   *                             f_sent_len - f_high >= self.train_min_gap_size and   *                             ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):             # <<<<<<<<<<<<<<   *                             f_x_high = f_high+self.train_min_gap_size   *                             met_constraints = 1   */ -              __pyx_t_18 = (!__pyx_v_self->tight_phrases); +              __pyx_t_18 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);                if (!__pyx_t_18) { -                __pyx_t_9 = ((__pyx_v_f_links_low[__pyx_v_f_high]) != -1); +                __pyx_t_9 = (((__pyx_v_f_links_low[__pyx_v_f_high]) != -1) != 0);                  if (__pyx_t_9) { -                  __pyx_t_20 = ((__pyx_v_f_links_low[__pyx_v_f_back_low]) != -1); +                  __pyx_t_20 = (((__pyx_v_f_links_low[__pyx_v_f_back_low]) != -1) != 0);                    __pyx_t_19 = __pyx_t_20;                  } else {                    __pyx_t_19 = __pyx_t_9; @@ -56375,7 +57140,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            if (__pyx_t_8) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1742 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1743   *                             f_sent_len - f_high >= self.train_min_gap_size and   *                             ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):   *                             f_x_high = f_high+self.train_min_gap_size             # <<<<<<<<<<<<<< @@ -56384,7 +57149,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_f_x_high = (__pyx_v_f_high + __pyx_v_self->train_min_gap_size); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1743 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1744   *                             ((not self.tight_phrases) or (f_links_low[f_high] != -1 and f_links_low[f_back_low] != -1))):   *                             f_x_high = f_high+self.train_min_gap_size   *                             met_constraints = 1             # <<<<<<<<<<<<<< @@ -56393,16 +57158,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_met_constraints = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1744 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1745   *                             f_x_high = f_high+self.train_min_gap_size   *                             met_constraints = 1   *                             if self.tight_phrases:             # <<<<<<<<<<<<<<   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1   */ -            if (__pyx_v_self->tight_phrases) { +            __pyx_t_8 = (__pyx_v_self->tight_phrases != 0); +            if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1745 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1746   *                             met_constraints = 1   *                             if self.tight_phrases:   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:             # <<<<<<<<<<<<<< @@ -56410,16 +57176,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   *                             if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:   */                while (1) { -                __pyx_t_8 = (__pyx_v_f_x_high <= __pyx_v_f_sent_len); +                __pyx_t_8 = ((__pyx_v_f_x_high <= __pyx_v_f_sent_len) != 0);                  if (__pyx_t_8) { -                  __pyx_t_7 = ((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1); +                  __pyx_t_7 = (((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1) != 0);                    __pyx_t_18 = __pyx_t_7;                  } else {                    __pyx_t_18 = __pyx_t_8;                  }                  if (!__pyx_t_18) break; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1746 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1747   *                             if self.tight_phrases:   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1             # <<<<<<<<<<<<<< @@ -56432,23 +57198,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L80:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1747 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1748   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1   *                             if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                                 met_constraints = 0   *    */ -            __pyx_t_18 = (__pyx_v_f_x_high > __pyx_v_f_sent_len); +            __pyx_t_18 = ((__pyx_v_f_x_high > __pyx_v_f_sent_len) != 0);              if (!__pyx_t_18) { -              __pyx_t_8 = ((__pyx_v_f_x_high - __pyx_v_f_back_low) > __pyx_v_self->train_max_initial_size); +              __pyx_t_8 = (((__pyx_v_f_x_high - __pyx_v_f_back_low) > __pyx_v_self->train_max_initial_size) != 0);                __pyx_t_7 = __pyx_t_8;              } else {                __pyx_t_7 = __pyx_t_18;              }              if (__pyx_t_7) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1748 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1749   *                                     f_x_high = f_x_high + 1   *                             if f_x_high > f_sent_len or f_x_high - f_back_low > self.train_max_initial_size:   *                                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -56460,43 +57226,43 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L83:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1750 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1751   *                                 met_constraints = 0   *    *                             if (met_constraints and             # <<<<<<<<<<<<<<   *                                 self.find_fixpoint(f_back_low, f_x_high,   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   */ -            if (__pyx_v_met_constraints) { +            if ((__pyx_v_met_constraints != 0)) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1751 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1752   *    *                             if (met_constraints and   *                                 self.find_fixpoint(f_back_low, f_x_high,             # <<<<<<<<<<<<<<   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   *                                             e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   */ -              __pyx_t_15 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1755 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1756   *                                             e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   *                                             f_sent_len, e_sent_len,   *                                             self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                             1, 1, 1, 0, 1, 1, 0) and   *                                 ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and   */ -              if (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0)) { +              if ((((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0) != 0)) {                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1757 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1758   *                                             self.train_max_initial_size, self.train_max_initial_size,   *                                             1, 1, 1, 0, 1, 1, 0) and   *                                 ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and             # <<<<<<<<<<<<<<   *                                 self.find_fixpoint(f_high, f_x_high,   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   */ -                __pyx_t_7 = (!__pyx_v_self->tight_phrases); +                __pyx_t_7 = (!(__pyx_v_self->tight_phrases != 0));                  if (!__pyx_t_7) {                    __pyx_t_18 = ((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) != -1);                    __pyx_t_8 = __pyx_t_18; @@ -56505,40 +57271,40 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if (__pyx_t_8) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1758 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1759   *                                             1, 1, 1, 0, 1, 1, 0) and   *                                 ((not self.tight_phrases) or f_links_low[f_x_high-1] != -1) and   *                                 self.find_fixpoint(f_high, f_x_high,             # <<<<<<<<<<<<<<   *                                             f_links_low, f_links_high, e_links_low, e_links_high,   *                                             -1, -1, e_gap_low+gap_start+num_gaps, e_gap_high+gap_start+num_gaps,   */ -                  __pyx_t_14 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_14 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_14); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1763 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1764   *                                             f_gap_low+gap_start+num_gaps, f_gap_high+gap_start+num_gaps,   *                                             f_sent_len, e_sent_len,   *                                             self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   */ -                  __pyx_t_7 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0); +                  __pyx_t_7 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_14, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + __pyx_v_gap_start) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + __pyx_v_gap_start) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);                    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                  } else {                    __pyx_t_7 = __pyx_t_8;                  }                  __pyx_t_8 = __pyx_t_7;                } else { -                __pyx_t_8 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0); +                __pyx_t_8 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_back_low, __pyx_t_15, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, __pyx_v_e_low, __pyx_v_e_high, (&__pyx_v_e_x_low), (&__pyx_v_e_x_high), (&__pyx_v_f_x_low), (&__pyx_v_f_x_high), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 1, 1, 1, 0, 1, 1, 0) != 0);                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                }                __pyx_t_7 = __pyx_t_8;              } else { -              __pyx_t_7 = __pyx_v_met_constraints; +              __pyx_t_7 = (__pyx_v_met_constraints != 0);              }              if (__pyx_t_7) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1765 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1766   *                                             self.train_max_initial_size, self.train_max_initial_size,   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()             # <<<<<<<<<<<<<< @@ -56547,7 +57313,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1766 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1767   *                                             0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   *                                 i = 1             # <<<<<<<<<<<<<< @@ -56556,31 +57322,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                __pyx_v_i = 1; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1767 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1768   *                                 fphr_arr._clear()   *                                 i = 1   *                                 self.findexes.reset()             # <<<<<<<<<<<<<<   *                                 if f_back_low < f_low:   *                                     fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_15 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1767; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15); -              __pyx_t_14 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1767; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1768 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1769   *                                 i = 1   *                                 self.findexes.reset()   *                                 if f_back_low < f_low:             # <<<<<<<<<<<<<<   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     i = i+1   */ -              __pyx_t_7 = (__pyx_v_f_back_low < __pyx_v_f_low); +              __pyx_t_7 = ((__pyx_v_f_back_low < __pyx_v_f_low) != 0);                if (__pyx_t_7) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1769 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1770   *                                 self.findexes.reset()   *                                 if f_back_low < f_low:   *                                     fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -56589,7 +57355,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                  ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1770 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1771   *                                 if f_back_low < f_low:   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     i = i+1             # <<<<<<<<<<<<<< @@ -56598,16 +57364,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                  __pyx_v_i = (__pyx_v_i + 1); -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1771 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1772   *                                     fphr_arr._append(sym_setindex(self.category, i))   *                                     i = i+1   *                                     self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:   */ -                __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14); -                __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; @@ -56615,47 +57381,47 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                }                __pyx_L85:; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1772 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1773   *                                     i = i+1   *                                     self.findexes.append(sym_setindex(self.category, i))   *                                 self.findexes.extend(self.findexes1)             # <<<<<<<<<<<<<<   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   */ -              __pyx_t_15 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15); -              __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));                PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_self->findexes1));                __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1)); -              __pyx_t_1 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1773 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1774   *                                     self.findexes.append(sym_setindex(self.category, i))   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:             # <<<<<<<<<<<<<<   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_3 = __pyx_v_phrase->n; -              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { +              __pyx_t_2 = __pyx_v_phrase->n; +              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1774 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1775   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):             # <<<<<<<<<<<<<<   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1   */ -                __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])); -                if (__pyx_t_4) { +                __pyx_t_7 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0); +                if (__pyx_t_7) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1775 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1776   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -56664,7 +57430,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1776 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1777   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1             # <<<<<<<<<<<<<< @@ -56676,7 +57442,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  /*else*/ { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1778 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1779   *                                         i = i + 1   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])             # <<<<<<<<<<<<<< @@ -56688,7 +57454,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_L88:;                } -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1779 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1780   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])   *                                 fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -56697,81 +57463,87 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1780 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1781   *                                         fphr_arr._append(phrase.syms[j])   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 fphr = Phrase(fphr_arr)   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,   */ -              __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1); -              __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1781 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1782   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr = Phrase(fphr_arr)             # <<<<<<<<<<<<<<   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,   *                                                     f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,   */ -              __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));                PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_fphr_arr));                __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr)); -              __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;                __Pyx_DECREF(((PyObject *)__pyx_v_fphr));                __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);                __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1784 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1785   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low+gap_start, e_gap_high+gap_start, e_links_low, num_gaps+1,   *                                                     f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,   *                                                     matching.sent_id, e_sent_len, e_sent_start)             # <<<<<<<<<<<<<<   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)   */ -              __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, (__pyx_v_e_gap_low + __pyx_v_gap_start), (__pyx_v_e_gap_high + __pyx_v_gap_start), __pyx_v_e_links_low, (__pyx_v_num_gaps + 1), __pyx_v_f_x_low, __pyx_v_f_x_high, (__pyx_v_f_gap_low + __pyx_v_gap_start), (__pyx_v_f_gap_high + __pyx_v_gap_start), __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_XDECREF(__pyx_v_phrase_list);                __pyx_v_phrase_list = __pyx_t_1;                __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1785 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1786   *                                                     f_x_low, f_x_high, f_gap_low+gap_start, f_gap_high+gap_start, f_links_low,   *                                                     matching.sent_id, e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:             # <<<<<<<<<<<<<<   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   */ -              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __pyx_t_7 = (__pyx_t_13 > 0); +              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_7 = ((__pyx_t_13 > 0) != 0);                if (__pyx_t_7) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1786 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1787   *                                                     matching.sent_id, e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)             # <<<<<<<<<<<<<<   *                                 else:   *                                     pair_count = 0   */ -                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  if (unlikely(__pyx_t_13 == 0)) { +                  #ifdef WITH_THREAD +                  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +                  #endif                    PyErr_Format(PyExc_ZeroDivisionError, "float division"); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1786; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #ifdef WITH_THREAD +                  PyGILState_Release(__pyx_gilstate_save); +                  #endif +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  }                  __pyx_v_pair_count = (1.0 / __pyx_t_13);                  goto __pyx_L89;                }                /*else*/ { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1788 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1789   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   *                                     pair_count = 0             # <<<<<<<<<<<<<< @@ -56782,7 +57554,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                }                __pyx_L89:; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1789 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1790   *                                 else:   *                                     pair_count = 0   *                                 for phrase2, eindexes in phrase_list:             # <<<<<<<<<<<<<< @@ -56793,23 +57565,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_t_1 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_1); __pyx_t_13 = 0;                  __pyx_t_16 = NULL;                } else { -                __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __pyx_t_16 = Py_TYPE(__pyx_t_1)->tp_iternext;                }                for (;;) {                  if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_1)) {                    if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_1)) break; -                  __pyx_t_14 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_14 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_14 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_1)) {                    if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -                  __pyx_t_14 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_14 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_14); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_14 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else {                    __pyx_t_14 = __pyx_t_16(__pyx_t_1);                    if (unlikely(!__pyx_t_14)) {                      if (PyErr_Occurred()) {                        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                      }                      break;                    } @@ -56817,54 +57597,63 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if ((likely(PyTuple_CheckExact(__pyx_t_14))) || (PyList_CheckExact(__pyx_t_14))) {                    PyObject* sequence = __pyx_t_14; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  Py_ssize_t size = Py_SIZE(sequence); +                  #else +                  Py_ssize_t size = PySequence_Size(sequence); +                  #endif +                  if (unlikely(size != 2)) { +                    if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                    else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  } +                  #if CYTHON_COMPILING_IN_CPYTHON                    if (likely(PyTuple_CheckExact(sequence))) { -                    if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                      if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_15 = PyTuple_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);                     } else { -                    if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                      if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_15 = PyList_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyList_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyList_GET_ITEM(sequence, 1);                     }                    __Pyx_INCREF(__pyx_t_15); -                  __Pyx_INCREF(__pyx_t_2); +                  __Pyx_INCREF(__pyx_t_3); +                  #else +                  __pyx_t_15 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_15); +                  __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_3); +                  #endif                    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -                } else { +                } else +                {                    Py_ssize_t index = -1; -                  __pyx_t_10 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_10 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_10);                    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                    __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;                    index = 0; __pyx_t_15 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_15)) goto __pyx_L92_unpacking_failed;                    __Pyx_GOTREF(__pyx_t_15); -                  index = 1; __pyx_t_2 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L92_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_2); -                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L92_unpacking_failed; +                  __Pyx_GOTREF(__pyx_t_3); +                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                    goto __pyx_L93_unpacking_done;                    __pyx_L92_unpacking_failed:;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -                  if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                  if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL; +                  if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __pyx_L93_unpacking_done:;                  }                  __Pyx_XDECREF(__pyx_v_phrase2);                  __pyx_v_phrase2 = __pyx_t_15;                  __pyx_t_15 = 0;                  __Pyx_XDECREF(__pyx_v_eindexes); -                __pyx_v_eindexes = __pyx_t_2; -                __pyx_t_2 = 0; +                __pyx_v_eindexes = __pyx_t_3; +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1790 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1791   *                                     pair_count = 0   *                                 for phrase2, eindexes in phrase_list:   *                                     als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)             # <<<<<<<<<<<<<< @@ -56873,31 +57662,32 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                  __pyx_t_14 = ((PyObject *)__pyx_v_self->findexes);                  __Pyx_INCREF(__pyx_t_14); -                __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, __pyx_t_14, __pyx_v_eindexes)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_2); +                if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_14), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_3);                  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                  __Pyx_XDECREF(((PyObject *)__pyx_v_als3)); -                __pyx_v_als3 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); -                __pyx_t_2 = 0; +                __pyx_v_als3 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1791 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1792   *                                 for phrase2, eindexes in phrase_list:   *                                     als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als3)))             # <<<<<<<<<<<<<<   *                         if (num_gaps < self.max_nonterminals - 1 and   *                             phrase_len+1 < self.max_length and   */ -                __pyx_t_2 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_2); -                __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_3); +                __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __Pyx_INCREF(((PyObject *)__pyx_v_als3));                  PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_als3));                  __Pyx_GIVEREF(((PyObject *)__pyx_v_als3)); -                __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_15 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; -                __pyx_t_14 = PyTuple_New(4); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_14 = PyTuple_New(4); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __Pyx_INCREF(((PyObject *)__pyx_v_fphr));                  PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_v_fphr)); @@ -56905,13 +57695,13 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __Pyx_INCREF(__pyx_v_phrase2);                  PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_phrase2);                  __Pyx_GIVEREF(__pyx_v_phrase2); -                PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_2); -                __Pyx_GIVEREF(__pyx_t_2); +                PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_3); +                __Pyx_GIVEREF(__pyx_t_3);                  PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_15);                  __Pyx_GIVEREF(__pyx_t_15); -                __pyx_t_2 = 0; +                __pyx_t_3 = 0;                  __pyx_t_15 = 0; -                __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; @@ -56924,88 +57714,88 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            __pyx_L79:; -          /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1792 +          /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1793   *                                     als3 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als3)))   *                         if (num_gaps < self.max_nonterminals - 1 and             # <<<<<<<<<<<<<<   *                             phrase_len+1 < self.max_length and   *                             f_back_high == f_high and   */ -          __pyx_t_7 = (__pyx_v_num_gaps < (__pyx_v_self->max_nonterminals - 1)); +          __pyx_t_7 = ((__pyx_v_num_gaps < (__pyx_v_self->max_nonterminals - 1)) != 0);            if (__pyx_t_7) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1793 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1794   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als3)))   *                         if (num_gaps < self.max_nonterminals - 1 and   *                             phrase_len+1 < self.max_length and             # <<<<<<<<<<<<<<   *                             f_back_high == f_high and   *                             f_back_low == f_low and   */ -            __pyx_t_8 = ((__pyx_v_phrase_len + 1) < __pyx_v_self->max_length); +            __pyx_t_8 = (((__pyx_v_phrase_len + 1) < __pyx_v_self->max_length) != 0);              if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1794 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1795   *                         if (num_gaps < self.max_nonterminals - 1 and   *                             phrase_len+1 < self.max_length and   *                             f_back_high == f_high and             # <<<<<<<<<<<<<<   *                             f_back_low == f_low and   *                             f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and   */ -              __pyx_t_18 = (__pyx_v_f_back_high == __pyx_v_f_high); +              __pyx_t_18 = ((__pyx_v_f_back_high == __pyx_v_f_high) != 0);                if (__pyx_t_18) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1795 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1796   *                             phrase_len+1 < self.max_length and   *                             f_back_high == f_high and   *                             f_back_low == f_low and             # <<<<<<<<<<<<<<   *                             f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and   *                             f_low >= self.train_min_gap_size and   */ -                __pyx_t_9 = (__pyx_v_f_back_low == __pyx_v_f_low); +                __pyx_t_9 = ((__pyx_v_f_back_low == __pyx_v_f_low) != 0);                  if (__pyx_t_9) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1796 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1797   *                             f_back_high == f_high and   *                             f_back_low == f_low and   *                             f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and             # <<<<<<<<<<<<<<   *                             f_low >= self.train_min_gap_size and   *                             f_high <= f_sent_len - self.train_min_gap_size and   */ -                  __pyx_t_19 = (((__pyx_v_f_back_high - __pyx_v_f_back_low) + (2 * __pyx_v_self->train_min_gap_size)) <= __pyx_v_self->train_max_initial_size); +                  __pyx_t_19 = ((((__pyx_v_f_back_high - __pyx_v_f_back_low) + (2 * __pyx_v_self->train_min_gap_size)) <= __pyx_v_self->train_max_initial_size) != 0);                    if (__pyx_t_19) { -                    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1797 +                    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1798   *                             f_back_low == f_low and   *                             f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and   *                             f_low >= self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                             f_high <= f_sent_len - self.train_min_gap_size and   *                             ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):   */ -                    __pyx_t_20 = (__pyx_v_f_low >= __pyx_v_self->train_min_gap_size); +                    __pyx_t_20 = ((__pyx_v_f_low >= __pyx_v_self->train_min_gap_size) != 0);                      if (__pyx_t_20) { -                      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1798 +                      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1799   *                             f_back_high - f_back_low + (2*self.train_min_gap_size) <= self.train_max_initial_size and   *                             f_low >= self.train_min_gap_size and   *                             f_high <= f_sent_len - self.train_min_gap_size and             # <<<<<<<<<<<<<<   *                             ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):   *    */ -                      __pyx_t_21 = (__pyx_v_f_high <= (__pyx_v_f_sent_len - __pyx_v_self->train_min_gap_size)); +                      __pyx_t_21 = ((__pyx_v_f_high <= (__pyx_v_f_sent_len - __pyx_v_self->train_min_gap_size)) != 0);                        if (__pyx_t_21) { -                        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1799 +                        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1800   *                             f_low >= self.train_min_gap_size and   *                             f_high <= f_sent_len - self.train_min_gap_size and   *                             ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):             # <<<<<<<<<<<<<<   *    *                             met_constraints = 1   */ -                        __pyx_t_22 = (!__pyx_v_self->tight_phrases); +                        __pyx_t_22 = ((!(__pyx_v_self->tight_phrases != 0)) != 0);                          if (!__pyx_t_22) { -                          __pyx_t_23 = ((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1); +                          __pyx_t_23 = (((__pyx_v_f_links_low[(__pyx_v_f_low - 1)]) != -1) != 0);                            if (__pyx_t_23) { -                            __pyx_t_24 = ((__pyx_v_f_links_low[__pyx_v_f_high]) != -1); +                            __pyx_t_24 = (((__pyx_v_f_links_low[__pyx_v_f_high]) != -1) != 0);                              __pyx_t_25 = __pyx_t_24;                            } else {                              __pyx_t_25 = __pyx_t_23; @@ -57044,7 +57834,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj            }            if (__pyx_t_8) { -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1801 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1802   *                             ((not self.tight_phrases) or (f_links_low[f_low-1] != -1 and f_links_low[f_high] != -1))):   *    *                             met_constraints = 1             # <<<<<<<<<<<<<< @@ -57053,7 +57843,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_met_constraints = 1; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1802 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1803   *    *                             met_constraints = 1   *                             f_x_low = f_low-self.train_min_gap_size             # <<<<<<<<<<<<<< @@ -57062,16 +57852,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_f_x_low = (__pyx_v_f_low - __pyx_v_self->train_min_gap_size); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1803 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1804   *                             met_constraints = 1   *                             f_x_low = f_low-self.train_min_gap_size   *                             if self.tight_phrases:             # <<<<<<<<<<<<<<   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1   */ -            if (__pyx_v_self->tight_phrases) { +            __pyx_t_8 = (__pyx_v_self->tight_phrases != 0); +            if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1804 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1805   *                             f_x_low = f_low-self.train_min_gap_size   *                             if self.tight_phrases:   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:             # <<<<<<<<<<<<<< @@ -57079,16 +57870,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   *                             if f_x_low < 0:   */                while (1) { -                __pyx_t_8 = (__pyx_v_f_x_low >= 0); +                __pyx_t_8 = ((__pyx_v_f_x_low >= 0) != 0);                  if (__pyx_t_8) { -                  __pyx_t_7 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1); +                  __pyx_t_7 = (((__pyx_v_f_links_low[__pyx_v_f_x_low]) == -1) != 0);                    __pyx_t_18 = __pyx_t_7;                  } else {                    __pyx_t_18 = __pyx_t_8;                  }                  if (!__pyx_t_18) break; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1805 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1806   *                             if self.tight_phrases:   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1             # <<<<<<<<<<<<<< @@ -57101,17 +57892,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L95:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1806 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1807   *                                 while f_x_low >= 0 and f_links_low[f_x_low] == -1:   *                                     f_x_low = f_x_low - 1   *                             if f_x_low < 0:             # <<<<<<<<<<<<<<   *                                 met_constraints = 0   *    */ -            __pyx_t_18 = (__pyx_v_f_x_low < 0); +            __pyx_t_18 = ((__pyx_v_f_x_low < 0) != 0);              if (__pyx_t_18) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1807 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1808   *                                     f_x_low = f_x_low - 1   *                             if f_x_low < 0:   *                                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -57123,7 +57914,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L98:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1809 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1810   *                                 met_constraints = 0   *    *                             f_x_high = f_high+self.train_min_gap_size             # <<<<<<<<<<<<<< @@ -57132,16 +57923,17 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */              __pyx_v_f_x_high = (__pyx_v_f_high + __pyx_v_self->train_min_gap_size); -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1810 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1811   *    *                             f_x_high = f_high+self.train_min_gap_size   *                             if self.tight_phrases:             # <<<<<<<<<<<<<<   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1   */ -            if (__pyx_v_self->tight_phrases) { +            __pyx_t_18 = (__pyx_v_self->tight_phrases != 0); +            if (__pyx_t_18) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1811 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1812   *                             f_x_high = f_high+self.train_min_gap_size   *                             if self.tight_phrases:   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:             # <<<<<<<<<<<<<< @@ -57149,16 +57941,16 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   *                             if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:   */                while (1) { -                __pyx_t_18 = (__pyx_v_f_x_high <= __pyx_v_f_sent_len); +                __pyx_t_18 = ((__pyx_v_f_x_high <= __pyx_v_f_sent_len) != 0);                  if (__pyx_t_18) { -                  __pyx_t_8 = ((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1); +                  __pyx_t_8 = (((__pyx_v_f_links_low[(__pyx_v_f_x_high - 1)]) == -1) != 0);                    __pyx_t_7 = __pyx_t_8;                  } else {                    __pyx_t_7 = __pyx_t_18;                  }                  if (!__pyx_t_7) break; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1812 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1813   *                             if self.tight_phrases:   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1             # <<<<<<<<<<<<<< @@ -57171,23 +57963,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L99:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1813 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1814   *                                 while f_x_high <= f_sent_len and f_links_low[f_x_high-1] == -1:   *                                     f_x_high = f_x_high + 1   *                             if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:             # <<<<<<<<<<<<<<   *                                 met_constraints = 0   *    */ -            __pyx_t_7 = (__pyx_v_f_x_high > __pyx_v_f_sent_len); +            __pyx_t_7 = ((__pyx_v_f_x_high > __pyx_v_f_sent_len) != 0);              if (!__pyx_t_7) { -              __pyx_t_18 = ((__pyx_v_f_x_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size); +              __pyx_t_18 = (((__pyx_v_f_x_high - __pyx_v_f_x_low) > __pyx_v_self->train_max_initial_size) != 0);                __pyx_t_8 = __pyx_t_18;              } else {                __pyx_t_8 = __pyx_t_7;              }              if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1814 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1815   *                                     f_x_high = f_x_high + 1   *                             if f_x_high > f_sent_len or f_x_high - f_x_low > self.train_max_initial_size:   *                                 met_constraints = 0             # <<<<<<<<<<<<<< @@ -57199,26 +57991,26 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj              }              __pyx_L102:; -            /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1816 +            /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1817   *                                 met_constraints = 0   *    *                             if (met_constraints and             # <<<<<<<<<<<<<<   *                                 (self.find_fixpoint(f_x_low, f_x_high,   *                                                 f_links_low, f_links_high, e_links_low, e_links_high,   */ -            if (__pyx_v_met_constraints) { +            if ((__pyx_v_met_constraints != 0)) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1817 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1818   *    *                             if (met_constraints and   *                                 (self.find_fixpoint(f_x_low, f_x_high,             # <<<<<<<<<<<<<<   *                                                 f_links_low, f_links_high, e_links_low, e_links_high,   *                                                 e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   */ -              __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1821 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1822   *                                                 e_low, e_high, &e_x_low, &e_x_high, &f_x_low, &f_x_high,   *                                                 f_sent_len, e_sent_len,   *                                                 self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<< @@ -57229,14 +58021,14 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                if (__pyx_t_8) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1823 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1824   *                                                 self.train_max_initial_size, self.train_max_initial_size,   *                                                 1, 1, 2, 1, 1, 1, 1) == 1) and   *                                 ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and             # <<<<<<<<<<<<<<   *                                 self.find_fixpoint(f_x_low, f_low,   *                                                 f_links_low, f_links_high, e_links_low, e_links_high,   */ -                __pyx_t_7 = (!__pyx_v_self->tight_phrases); +                __pyx_t_7 = (!(__pyx_v_self->tight_phrases != 0));                  if (!__pyx_t_7) {                    __pyx_t_18 = ((__pyx_v_f_links_low[__pyx_v_f_x_low]) != -1);                    if (__pyx_t_18) { @@ -57251,65 +58043,65 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if (__pyx_t_18) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1824 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1825   *                                                 1, 1, 2, 1, 1, 1, 1) == 1) and   *                                 ((not self.tight_phrases) or (f_links_low[f_x_low] != -1 and f_links_low[f_x_high-1] != -1)) and   *                                 self.find_fixpoint(f_x_low, f_low,             # <<<<<<<<<<<<<<   *                                                 f_links_low, f_links_high, e_links_low, e_links_high,   *                                                 -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,   */ -                  __pyx_t_1 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_1 = PyInt_FromLong(__pyx_v_f_low); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_1); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1828 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1829   *                                                 -1, -1, e_gap_low, e_gap_high, f_gap_low, f_gap_high,   *                                                 f_sent_len, e_sent_len,   *                                                 self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                                 0, 0, 0, 0, 0, 0, 0) and   *                                 self.find_fixpoint(f_high, f_x_high,   */ -                  __pyx_t_3 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0); +                  __pyx_t_7 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_x_low, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);                    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                  if (__pyx_t_3) { +                  if (__pyx_t_7) { -                    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1830 +                    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1831   *                                                 self.train_max_initial_size, self.train_max_initial_size,   *                                                 0, 0, 0, 0, 0, 0, 0) and   *                                 self.find_fixpoint(f_high, f_x_high,             # <<<<<<<<<<<<<<   *                                                 f_links_low, f_links_high, e_links_low, e_links_high,   *                                                 -1, -1, e_gap_low+1+num_gaps, e_gap_high+1+num_gaps,   */ -                    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_x_high); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                      __Pyx_GOTREF(__pyx_t_1); -                    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1835 +                    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1836   *                                                 f_gap_low+1+num_gaps, f_gap_high+1+num_gaps,   *                                                 f_sent_len, e_sent_len,   *                                                 self.train_max_initial_size, self.train_max_initial_size,             # <<<<<<<<<<<<<<   *                                                 0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   */ -                    __pyx_t_4 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + 1) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0); +                    __pyx_t_19 = (((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->find_fixpoint(__pyx_v_self, __pyx_v_f_high, __pyx_t_1, __pyx_v_f_links_low, __pyx_v_f_links_high, __pyx_v_e_links_low, __pyx_v_e_links_high, -1, -1, ((__pyx_v_e_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_e_gap_high + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_low + 1) + __pyx_v_num_gaps), ((__pyx_v_f_gap_high + 1) + __pyx_v_num_gaps), __pyx_v_f_sent_len, __pyx_v_e_sent_len, __pyx_v_self->train_max_initial_size, __pyx_v_self->train_max_initial_size, 0, 0, 0, 0, 0, 0, 0) != 0);                      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -                    __pyx_t_7 = __pyx_t_4; +                    __pyx_t_9 = __pyx_t_19;                    } else { -                    __pyx_t_7 = __pyx_t_3; +                    __pyx_t_9 = __pyx_t_7;                    } -                  __pyx_t_19 = __pyx_t_7; +                  __pyx_t_7 = __pyx_t_9;                  } else { -                  __pyx_t_19 = __pyx_t_18; +                  __pyx_t_7 = __pyx_t_18;                  } -                __pyx_t_18 = __pyx_t_19; +                __pyx_t_18 = __pyx_t_7;                } else {                  __pyx_t_18 = __pyx_t_8;                }                __pyx_t_8 = __pyx_t_18;              } else { -              __pyx_t_8 = __pyx_v_met_constraints; +              __pyx_t_8 = (__pyx_v_met_constraints != 0);              }              if (__pyx_t_8) { -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1837 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1838   *                                                 self.train_max_initial_size, self.train_max_initial_size,   *                                                 0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()             # <<<<<<<<<<<<<< @@ -57318,7 +58110,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_clear(__pyx_v_fphr_arr); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1838 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1839   *                                                 0, 0, 0, 0, 0, 0, 0)):   *                                 fphr_arr._clear()   *                                 i = 1             # <<<<<<<<<<<<<< @@ -57327,35 +58119,35 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                __pyx_v_i = 1; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1839 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1840   *                                 fphr_arr._clear()   *                                 i = 1   *                                 self.findexes.reset()             # <<<<<<<<<<<<<<   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__reset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1); -              __pyx_t_15 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1840 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1841   *                                 i = 1   *                                 self.findexes.reset()   *                                 self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1   */ -              __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15); -              __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1840; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_15); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1);                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1841 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1842   *                                 self.findexes.reset()   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -57364,7 +58156,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1842 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1843   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1             # <<<<<<<<<<<<<< @@ -57373,47 +58165,47 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                __pyx_v_i = (__pyx_v_i + 1); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1843 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1844   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 i = i+1   *                                 self.findexes.extend(self.findexes1)             # <<<<<<<<<<<<<<   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   */ -              __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->findexes), __pyx_n_s__extend); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_1); -              __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_INCREF(((PyObject *)__pyx_v_self->findexes1));                PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_self->findexes1));                __Pyx_GIVEREF(((PyObject *)__pyx_v_self->findexes1)); -              __pyx_t_14 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;                __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1844 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1845   *                                 i = i+1   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:             # <<<<<<<<<<<<<<   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   */ -              __pyx_t_3 = __pyx_v_phrase->n; -              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_3; __pyx_v_j++) { +              __pyx_t_2 = __pyx_v_phrase->n; +              for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_2; __pyx_v_j++) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1845 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1846   *                                 self.findexes.extend(self.findexes1)   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):             # <<<<<<<<<<<<<<   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1   */ -                __pyx_t_4 = __pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])); -                if (__pyx_t_4) { +                __pyx_t_8 = (__pyx_f_3_sa_sym_isvar((__pyx_v_phrase->syms[__pyx_v_j])) != 0); +                if (__pyx_t_8) { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1846 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1847   *                                 for j from 0 <= j < phrase.n:   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -57422,7 +58214,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                    ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1847 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1848   *                                     if sym_isvar(phrase.syms[j]):   *                                         fphr_arr._append(sym_setindex(self.category, i))   *                                         i = i + 1             # <<<<<<<<<<<<<< @@ -57434,7 +58226,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  /*else*/ { -                  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1849 +                  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1850   *                                         i = i + 1   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])             # <<<<<<<<<<<<<< @@ -57446,7 +58238,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_L106:;                } -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1850 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1851   *                                     else:   *                                         fphr_arr._append(phrase.syms[j])   *                                 fphr_arr._append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<< @@ -57455,81 +58247,87 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                ((struct __pyx_vtabstruct_3_sa_IntList *)__pyx_v_fphr_arr->__pyx_vtab)->_append(__pyx_v_fphr_arr, __pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1851 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1852   *                                         fphr_arr._append(phrase.syms[j])   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 self.findexes.append(sym_setindex(self.category, i))             # <<<<<<<<<<<<<<   *                                 fphr = Phrase(fphr_arr)   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,   */ -              __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_v_self->category, __pyx_v_i)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14); -              __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1851; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = __Pyx_PyObject_Append(((PyObject *)__pyx_v_self->findexes), __pyx_t_14); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1852 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1853   *                                 fphr_arr._append(sym_setindex(self.category, i))   *                                 self.findexes.append(sym_setindex(self.category, i))   *                                 fphr = Phrase(fphr_arr)             # <<<<<<<<<<<<<<   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,   */ -              __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_15);                __Pyx_INCREF(((PyObject *)__pyx_v_fphr_arr));                PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr_arr));                __Pyx_GIVEREF(((PyObject *)__pyx_v_fphr_arr)); -              __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;                __Pyx_DECREF(((PyObject *)__pyx_v_fphr));                __pyx_v_fphr = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_14);                __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1855 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1856   *                                 phrase_list = self.extract_phrases(e_x_low, e_x_high, e_gap_low, e_gap_high, e_links_low, num_gaps+2,   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,   *                                                     matching.sent_id, e_sent_len, e_sent_start)             # <<<<<<<<<<<<<<   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)   */ -              __pyx_t_14 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 2), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_14 = ((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->extract_phrases(__pyx_v_self, __pyx_v_e_x_low, __pyx_v_e_x_high, __pyx_v_e_gap_low, __pyx_v_e_gap_high, __pyx_v_e_links_low, (__pyx_v_num_gaps + 2), __pyx_v_f_x_low, __pyx_v_f_x_high, __pyx_v_f_gap_low, __pyx_v_f_gap_high, __pyx_v_f_links_low, __pyx_v_matching->sent_id, __pyx_v_e_sent_len, __pyx_v_e_sent_start); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                __Pyx_GOTREF(__pyx_t_14);                __Pyx_XDECREF(__pyx_v_phrase_list);                __pyx_v_phrase_list = __pyx_t_14;                __pyx_t_14 = 0; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1856 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1857   *                                                     f_x_low, f_x_high, f_gap_low, f_gap_high, f_links_low,   *                                                     matching.sent_id, e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:             # <<<<<<<<<<<<<<   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   */ -              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -              __pyx_t_8 = (__pyx_t_13 > 0); +              __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              __pyx_t_8 = ((__pyx_t_13 > 0) != 0);                if (__pyx_t_8) { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1857 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1858   *                                                     matching.sent_id, e_sent_len, e_sent_start)   *                                 if len(phrase_list) > 0:   *                                     pair_count = 1.0 / len(phrase_list)             # <<<<<<<<<<<<<<   *                                 else:   *                                     pair_count = 0   */ -                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = PyObject_Length(__pyx_v_phrase_list); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  if (unlikely(__pyx_t_13 == 0)) { +                  #ifdef WITH_THREAD +                  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); +                  #endif                    PyErr_Format(PyExc_ZeroDivisionError, "float division"); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #ifdef WITH_THREAD +                  PyGILState_Release(__pyx_gilstate_save); +                  #endif +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  }                  __pyx_v_pair_count = (1.0 / __pyx_t_13);                  goto __pyx_L107;                }                /*else*/ { -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1859 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1860   *                                     pair_count = 1.0 / len(phrase_list)   *                                 else:   *                                     pair_count = 0             # <<<<<<<<<<<<<< @@ -57540,7 +58338,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                }                __pyx_L107:; -              /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1860 +              /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1861   *                                 else:   *                                     pair_count = 0   *                                 for phrase2, eindexes in phrase_list:             # <<<<<<<<<<<<<< @@ -57551,23 +58349,31 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __pyx_t_14 = __pyx_v_phrase_list; __Pyx_INCREF(__pyx_t_14); __pyx_t_13 = 0;                  __pyx_t_16 = NULL;                } else { -                __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_13 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_v_phrase_list); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_14);                  __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext;                }                for (;;) {                  if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_14)) {                    if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_14)) break; -                  __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_15 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_14)) {                    if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -                  __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_13); __Pyx_INCREF(__pyx_t_15); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #else +                  __pyx_t_15 = PySequence_ITEM(__pyx_t_14, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  #endif                  } else {                    __pyx_t_15 = __pyx_t_16(__pyx_t_14);                    if (unlikely(!__pyx_t_15)) {                      if (PyErr_Occurred()) {                        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                      else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                      }                      break;                    } @@ -57575,54 +58381,63 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  }                  if ((likely(PyTuple_CheckExact(__pyx_t_15))) || (PyList_CheckExact(__pyx_t_15))) {                    PyObject* sequence = __pyx_t_15; +                  #if CYTHON_COMPILING_IN_CPYTHON +                  Py_ssize_t size = Py_SIZE(sequence); +                  #else +                  Py_ssize_t size = PySequence_Size(sequence); +                  #endif +                  if (unlikely(size != 2)) { +                    if (size > 2) __Pyx_RaiseTooManyValuesError(2); +                    else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +                    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  } +                  #if CYTHON_COMPILING_IN_CPYTHON                    if (likely(PyTuple_CheckExact(sequence))) { -                    if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -                      if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);                     } else { -                    if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -                      if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -                      else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -                      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                    }                      __pyx_t_1 = PyList_GET_ITEM(sequence, 0);  -                    __pyx_t_2 = PyList_GET_ITEM(sequence, 1);  +                    __pyx_t_3 = PyList_GET_ITEM(sequence, 1);                     }                    __Pyx_INCREF(__pyx_t_1); -                  __Pyx_INCREF(__pyx_t_2); +                  __Pyx_INCREF(__pyx_t_3); +                  #else +                  __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_1); +                  __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __Pyx_GOTREF(__pyx_t_3); +                  #endif                    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -                } else { +                } else +                {                    Py_ssize_t index = -1; -                  __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_10 = PyObject_GetIter(__pyx_t_15); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __Pyx_GOTREF(__pyx_t_10);                    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                    __pyx_t_17 = Py_TYPE(__pyx_t_10)->tp_iternext;                    index = 0; __pyx_t_1 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L110_unpacking_failed;                    __Pyx_GOTREF(__pyx_t_1); -                  index = 1; __pyx_t_2 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L110_unpacking_failed; -                  __Pyx_GOTREF(__pyx_t_2); -                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_10); if (unlikely(!__pyx_t_3)) goto __pyx_L110_unpacking_failed; +                  __Pyx_GOTREF(__pyx_t_3); +                  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;                    goto __pyx_L111_unpacking_done;                    __pyx_L110_unpacking_failed:;                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; -                  if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -                  if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                  __pyx_t_17 = NULL; +                  if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +                  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                    __pyx_L111_unpacking_done:;                  }                  __Pyx_XDECREF(__pyx_v_phrase2);                  __pyx_v_phrase2 = __pyx_t_1;                  __pyx_t_1 = 0;                  __Pyx_XDECREF(__pyx_v_eindexes); -                __pyx_v_eindexes = __pyx_t_2; -                __pyx_t_2 = 0; +                __pyx_v_eindexes = __pyx_t_3; +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1861 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1862   *                                     pair_count = 0   *                                 for phrase2, eindexes in phrase_list:   *                                     als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)             # <<<<<<<<<<<<<< @@ -57631,31 +58446,32 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */                  __pyx_t_15 = ((PyObject *)__pyx_v_self->findexes);                  __Pyx_INCREF(__pyx_t_15); -                __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, __pyx_t_15, __pyx_v_eindexes)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1861; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_2); +                if (!(likely(((__pyx_v_eindexes) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_eindexes, __pyx_ptype_3_sa_IntList))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory *)__pyx_v_self->__pyx_vtab)->create_alignments(__pyx_v_self, __pyx_v_sent_links, __pyx_v_num_links, ((struct __pyx_obj_3_sa_IntList *)__pyx_t_15), ((struct __pyx_obj_3_sa_IntList *)__pyx_v_eindexes))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_3);                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;                  __Pyx_XDECREF(((PyObject *)__pyx_v_als4)); -                __pyx_v_als4 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2); -                __pyx_t_2 = 0; +                __pyx_v_als4 = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_3); +                __pyx_t_3 = 0; -                /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1862 +                /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1863   *                                 for phrase2, eindexes in phrase_list:   *                                     als4 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als4)))             # <<<<<<<<<<<<<<   *             else:   *                 reason_for_failure = "Unable to extract basic phrase"   */ -                __pyx_t_2 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -                __Pyx_GOTREF(__pyx_t_2); -                __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pair_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __Pyx_GOTREF(__pyx_t_3); +                __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __Pyx_INCREF(((PyObject *)__pyx_v_als4));                  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_als4));                  __Pyx_GIVEREF(((PyObject *)__pyx_v_als4)); -                __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -                __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_15 = PyTuple_New(4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_15);                  __Pyx_INCREF(((PyObject *)__pyx_v_fphr));                  PyTuple_SET_ITEM(__pyx_t_15, 0, ((PyObject *)__pyx_v_fphr)); @@ -57663,13 +58479,13 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj                  __Pyx_INCREF(__pyx_v_phrase2);                  PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_phrase2);                  __Pyx_GIVEREF(__pyx_v_phrase2); -                PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_2); -                __Pyx_GIVEREF(__pyx_t_2); +                PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_3); +                __Pyx_GIVEREF(__pyx_t_3);                  PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_1);                  __Pyx_GIVEREF(__pyx_t_1); -                __pyx_t_2 = 0; +                __pyx_t_3 = 0;                  __pyx_t_1 = 0; -                __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +                __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_extracts, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}                  __Pyx_GOTREF(__pyx_t_1);                  __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -57691,23 +58507,23 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj      }      /*else*/ { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1864 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1865   *                                     extracts.append((fphr, phrase2, pair_count, tuple(als4)))   *             else:   *                 reason_for_failure = "Unable to extract basic phrase"             # <<<<<<<<<<<<<<   *    *         free(sent_links)   */ -      __Pyx_INCREF(((PyObject *)__pyx_kp_s_134)); +      __Pyx_INCREF(((PyObject *)__pyx_kp_s_139));        __Pyx_DECREF(__pyx_v_reason_for_failure); -      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_134); +      __pyx_v_reason_for_failure = ((PyObject *)__pyx_kp_s_139);      }      __pyx_L34:;      goto __pyx_L33;    }    __pyx_L33:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1866 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1867   *                 reason_for_failure = "Unable to extract basic phrase"   *    *         free(sent_links)             # <<<<<<<<<<<<<< @@ -57716,7 +58532,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_sent_links); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1867 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1868   *    *         free(sent_links)   *         free(f_links_low)             # <<<<<<<<<<<<<< @@ -57725,7 +58541,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_f_links_low); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1868 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1869   *         free(sent_links)   *         free(f_links_low)   *         free(f_links_high)             # <<<<<<<<<<<<<< @@ -57734,7 +58550,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_f_links_high); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1869 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1870   *         free(f_links_low)   *         free(f_links_high)   *         free(e_links_low)             # <<<<<<<<<<<<<< @@ -57743,7 +58559,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_e_links_low); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1870 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1871   *         free(f_links_high)   *         free(e_links_low)   *         free(e_links_high)             # <<<<<<<<<<<<<< @@ -57752,7 +58568,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_e_links_high); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1871 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1872   *         free(e_links_low)   *         free(e_links_high)   *         free(f_gap_low)             # <<<<<<<<<<<<<< @@ -57761,7 +58577,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_f_gap_low); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1872 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1873   *         free(e_links_high)   *         free(f_gap_low)   *         free(f_gap_high)             # <<<<<<<<<<<<<< @@ -57770,7 +58586,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_f_gap_high); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1873 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1874   *         free(f_gap_low)   *         free(f_gap_high)   *         free(e_gap_low)             # <<<<<<<<<<<<<< @@ -57779,7 +58595,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_e_gap_low); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1874 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1875   *         free(f_gap_high)   *         free(e_gap_low)   *         free(e_gap_high)             # <<<<<<<<<<<<<< @@ -57788,7 +58604,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj   */    free(__pyx_v_e_gap_high); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1876 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1877   *         free(e_gap_high)   *    *         return extracts             # <<<<<<<<<<<<<< @@ -57804,7 +58620,7 @@ static PyObject *__pyx_f_3_sa_23HieroCachingRuleFactory_extract(struct __pyx_obj    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_10);    __Pyx_XDECREF(__pyx_t_14);    __Pyx_XDECREF(__pyx_t_15); @@ -57836,11 +58652,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance(PyObject    PyObject *__pyx_v_f_words = 0;    PyObject *__pyx_v_e_words = 0;    PyObject *__pyx_v_alignment = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_words,&__pyx_n_s__e_words,&__pyx_n_s__alignment,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("add_instance (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_words,&__pyx_n_s__e_words,&__pyx_n_s__alignment,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -57855,24 +58674,21 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance(PyObject        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_words); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_words)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_words); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_words)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__alignment)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_instance") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_instance") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -57887,7 +58703,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance(PyObject    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("add_instance", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -57911,12 +58727,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract    PyObject *__pyx_v_links = 0;    PyObject *__pyx_v_nt = 0;    PyObject *__pyx_v_nt_open = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__e_i,&__pyx_n_s__e_j,&__pyx_n_s__min_bound,&__pyx_n_s__wc,&__pyx_n_s__links,&__pyx_n_s__nt,&__pyx_n_s__nt_open,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("extract (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__e_i,&__pyx_n_s__e_j,&__pyx_n_s__min_bound,&__pyx_n_s__wc,&__pyx_n_s__links,&__pyx_n_s__nt,&__pyx_n_s__nt_open,0};      PyObject* values[9] = {0,0,0,0,0,0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -57937,60 +58755,51 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_j); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  4: -        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__min_bound); -        if (likely(values[4])) kw_args--; +        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__min_bound)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  5: -        values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc); -        if (likely(values[5])) kw_args--; +        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  6: -        values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__links); -        if (likely(values[6])) kw_args--; +        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__links)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  7: -        values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt); -        if (likely(values[7])) kw_args--; +        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 7); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 7); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  8: -        values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt_open); -        if (likely(values[8])) kw_args--; +        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt_open)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 8); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, 8); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {        goto __pyx_L5_argtuple_error; @@ -58017,7 +58826,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("extract", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -58028,7 +58837,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_12add_instance_1extract    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1918 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919   *         # f_ i and j are current, e_ i and j are previous   *         # We care _considering_ f_j, so it is not yet in counts   *         def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):             # <<<<<<<<<<<<<< @@ -58064,9 +58873,8 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    int __pyx_t_11;    PyObject *(*__pyx_t_12)(PyObject *);    int __pyx_t_13; -  Py_ssize_t __pyx_t_14; -  PyObject *__pyx_t_15 = NULL; -  int __pyx_t_16; +  PyObject *__pyx_t_14 = NULL; +  int __pyx_t_15;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0; @@ -58074,35 +58882,33 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    __pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *) __Pyx_CyFunction_GetClosure(__pyx_self);    __pyx_cur_scope = __pyx_outer_scope; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1920 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1921   *         def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:             # <<<<<<<<<<<<<<   *                 return   *             # Unaligned word   */ -  if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __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[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    if (!__pyx_t_3) { -    __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __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; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __pyx_t_6 = __pyx_t_5;    } else { @@ -58110,7 +58916,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    }    if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1921 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1922   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   *                 return             # <<<<<<<<<<<<<< @@ -58124,42 +58930,41 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1923 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1924   *                 return   *             # Unaligned word   *             if not al[f_j]:             # <<<<<<<<<<<<<<   *                 # Adjacent to non-terminal: extend (non-terminal now open)   *                 if nt and nt[-1][2] == f_j - 1:   */ -  if (unlikely(!__pyx_cur_scope->__pyx_v_al)) { __Pyx_RaiseClosureNameError("al"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_v_al)) { __Pyx_RaiseClosureNameError("al"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  __pyx_t_3 = (!__pyx_t_6); +  __pyx_t_3 = ((!__pyx_t_6) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1925 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1926   *             if not al[f_j]:   *                 # Adjacent to non-terminal: extend (non-terminal now open)   *                 if nt and nt[-1][2] == f_j - 1:             # <<<<<<<<<<<<<<   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   */ -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_3) { -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __pyx_t_5 = __pyx_t_6;      } else { @@ -58167,109 +58972,80 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      }      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1926 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1927   *                 # Adjacent to non-terminal: extend (non-terminal now open)   *                 if nt and nt[-1][2] == f_j - 1:   *                     nt[-1][2] += 1             # <<<<<<<<<<<<<<   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   *                     nt[-1][2] -= 1   */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __pyx_t_7 = 2; -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      if (__Pyx_SetItemInt(__pyx_t_1, __pyx_t_7, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_SetItemInt(__pyx_t_1, __pyx_t_7, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1927 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1928   *                 if nt and nt[-1][2] == f_j - 1:   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)             # <<<<<<<<<<<<<<   *                     nt[-1][2] -= 1   *                 # Unless non-terminal already open, always extend with word   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_e_i, __pyx_v_e_j, __pyx_v_min_bound, __pyx_v_wc, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); -      __Pyx_INCREF(__pyx_v_e_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_e_i); -      __Pyx_GIVEREF(__pyx_v_e_i); -      __Pyx_INCREF(__pyx_v_e_j); -      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_e_j); -      __Pyx_GIVEREF(__pyx_v_e_j); -      __Pyx_INCREF(__pyx_v_min_bound); -      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_min_bound); -      __Pyx_GIVEREF(__pyx_v_min_bound); -      __Pyx_INCREF(__pyx_v_wc); -      PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_wc); -      __Pyx_GIVEREF(__pyx_v_wc); -      __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_links); -      __Pyx_GIVEREF(__pyx_v_links); -      __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_4, 7, __pyx_v_nt); -      __Pyx_GIVEREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_4, 8, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __pyx_t_1 = 0; -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(((PyObject *)__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; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1928 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1929   *                     nt[-1][2] += 1   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc, links, nt, True)   *                     nt[-1][2] -= 1             # <<<<<<<<<<<<<<   *                 # Unless non-terminal already open, always extend with word   *                 # Make sure adding a word doesn't exceed length   */ -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_7 = 2; -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = 2; +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_7, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_7, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1928; __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_SetItemInt(__pyx_t_4, __pyx_t_7, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1929; __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;        goto __pyx_L5;      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1931 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1932   *                 # Unless non-terminal already open, always extend with word   *                 # Make sure adding a word doesn't exceed length   *                 if not nt_open and wc < self.max_length:             # <<<<<<<<<<<<<<   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)   *                 return   */ -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_3 = (!__pyx_t_5);      if (__pyx_t_3) { -      __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __pyx_t_6 = __pyx_t_5;      } else { @@ -58277,58 +59053,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      }      if (__pyx_t_6) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1932 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1933   *                 # Make sure adding a word doesn't exceed length   *                 if not nt_open and wc < self.max_length:   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)             # <<<<<<<<<<<<<<   *                 return   *             # Aligned word   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_8 = PyTuple_New(9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_8 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_e_i, __pyx_v_e_j, __pyx_v_min_bound, __pyx_t_4, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); -      __Pyx_INCREF(__pyx_v_e_i); -      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_e_i); -      __Pyx_GIVEREF(__pyx_v_e_i); -      __Pyx_INCREF(__pyx_v_e_j); -      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_e_j); -      __Pyx_GIVEREF(__pyx_v_e_j); -      __Pyx_INCREF(__pyx_v_min_bound); -      PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_min_bound); -      __Pyx_GIVEREF(__pyx_v_min_bound); -      PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_v_links); -      __Pyx_GIVEREF(__pyx_v_links); -      __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_8, 7, __pyx_v_nt); -      __Pyx_GIVEREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_8, 8, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_1 = 0; -      __pyx_t_2 = 0; -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        goto __pyx_L6;      }      __pyx_L6:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1933 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1934   *                 if not nt_open and wc < self.max_length:   *                     extract(f_i, f_j + 1, e_i, e_j, min_bound, wc + 1, links, nt, False)   *                 return             # <<<<<<<<<<<<<< @@ -58342,38 +59091,46 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1935 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1936   *                 return   *             # Aligned word   *             link_i = fe_span[f_j][0]             # <<<<<<<<<<<<<<   *             link_j = fe_span[f_j][1]   *             new_e_i = min(link_i, e_i)   */ -  if (unlikely(!__pyx_cur_scope->__pyx_v_fe_span)) { __Pyx_RaiseClosureNameError("fe_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_4); -  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_v_fe_span)) { __Pyx_RaiseClosureNameError("fe_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span) == Py_None)) { +    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8); -  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  __pyx_v_link_i = __pyx_t_8; -  __pyx_t_8 = 0; +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_v_link_i = __pyx_t_2; +  __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1936 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1937   *             # Aligned word   *             link_i = fe_span[f_j][0]   *             link_j = fe_span[f_j][1]             # <<<<<<<<<<<<<<   *             new_e_i = min(link_i, e_i)   *             new_e_j = max(link_j, e_j)   */ -  __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span) == Py_None)) { +    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f_j); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8); -  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_4); -  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -  __pyx_v_link_j = __pyx_t_4; -  __pyx_t_4 = 0; +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +  __pyx_v_link_j = __pyx_t_8; +  __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1937 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1938   *             link_i = fe_span[f_j][0]   *             link_j = fe_span[f_j][1]   *             new_e_i = min(link_i, e_i)             # <<<<<<<<<<<<<< @@ -58381,27 +59138,28 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             # Check reverse links of newly covered words to see if they violate left   */    __Pyx_INCREF(__pyx_v_e_i); -  __pyx_t_4 = __pyx_v_e_i; +  __pyx_t_8 = __pyx_v_e_i;    __Pyx_INCREF(__pyx_v_link_i); -  __pyx_t_8 = __pyx_v_link_i; -  __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_8, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __pyx_v_link_i; +  __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_6) { -    __Pyx_INCREF(__pyx_t_4); -    __pyx_t_2 = __pyx_t_4; -  } else {      __Pyx_INCREF(__pyx_t_8); -    __pyx_t_2 = __pyx_t_8; +    __pyx_t_4 = __pyx_t_8; +  } else { +    __Pyx_INCREF(__pyx_t_2); +    __pyx_t_4 = __pyx_t_2;    } +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = __pyx_t_4; +  __Pyx_INCREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  __Pyx_INCREF(__pyx_t_2); -  __pyx_v_new_e_i = __pyx_t_2; -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +  __pyx_v_new_e_i = __pyx_t_8; +  __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1938 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1939   *             link_j = fe_span[f_j][1]   *             new_e_i = min(link_i, e_i)   *             new_e_j = max(link_j, e_j)             # <<<<<<<<<<<<<< @@ -58409,27 +59167,28 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   *             # bound (return) or extend minimum right bound for chunk   */    __Pyx_INCREF(__pyx_v_e_j); -  __pyx_t_2 = __pyx_v_e_j; +  __pyx_t_8 = __pyx_v_e_j;    __Pyx_INCREF(__pyx_v_link_j);    __pyx_t_4 = __pyx_v_link_j; -  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_6) { -    __Pyx_INCREF(__pyx_t_2); -    __pyx_t_8 = __pyx_t_2; +    __Pyx_INCREF(__pyx_t_8); +    __pyx_t_2 = __pyx_t_8;    } else {      __Pyx_INCREF(__pyx_t_4); -    __pyx_t_8 = __pyx_t_4; +    __pyx_t_2 = __pyx_t_4;    }    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = __pyx_t_2;    __Pyx_INCREF(__pyx_t_8); +  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __pyx_v_new_e_j = __pyx_t_8; -  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +  __pyx_t_8 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1941 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1942   *             # Check reverse links of newly covered words to see if they violate left   *             # bound (return) or extend minimum right bound for chunk   *             new_min_bound = min_bound             # <<<<<<<<<<<<<< @@ -58439,56 +59198,58 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    __Pyx_INCREF(__pyx_v_min_bound);    __pyx_v_new_min_bound = __pyx_v_min_bound; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1943 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1944   *             new_min_bound = min_bound   *             # First aligned word creates span   *             if e_j == -1:             # <<<<<<<<<<<<<<   *                 for i from new_e_i <= i <= new_e_j:   *                     if ef_span[i][0] < f_i:   */ -  __pyx_t_8 = PyObject_RichCompare(__pyx_v_e_j, __pyx_int_neg_1, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_8); -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_RichCompare(__pyx_v_e_j, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1944 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1945   *             # First aligned word creates span   *             if e_j == -1:   *                 for i from new_e_i <= i <= new_e_j:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      for (__pyx_t_11 = __pyx_t_9; __pyx_t_11 <= __pyx_t_10; __pyx_t_11++) { -      __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __Pyx_XDECREF(__pyx_v_i);        __pyx_v_i = __pyx_t_8;        __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1945 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1946   *             if e_j == -1:   *                 for i from new_e_i <= i <= new_e_j:   *                     if ef_span[i][0] < f_i:             # <<<<<<<<<<<<<<   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_i, Py_LT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1946 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1947   *                 for i from new_e_i <= i <= new_e_j:   *                     if ef_span[i][0] < f_i:   *                         return             # <<<<<<<<<<<<<< @@ -58502,23 +59263,26 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __pyx_L10:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1947 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1948   *                     if ef_span[i][0] < f_i:   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])             # <<<<<<<<<<<<<<   *             # Other aligned words extend span   *             else:   */ -      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound);        __pyx_t_8 = __pyx_v_new_min_bound; -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_8, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_8, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_6) {          __Pyx_INCREF(__pyx_t_2); @@ -58529,66 +59293,71 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_INCREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_v_new_min_bound); -      __pyx_v_new_min_bound = __pyx_t_4; +      __pyx_t_2 = __pyx_t_4; +      __Pyx_INCREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_v_new_min_bound); +      __pyx_v_new_min_bound = __pyx_t_2; +      __pyx_t_2 = 0; +      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1944 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1945   *             # First aligned word creates span   *             if e_j == -1:   *                 for i from new_e_i <= i <= new_e_j:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_4 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1944; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_2 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2);      __Pyx_XDECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_4; -    __pyx_t_4 = 0; +    __pyx_v_i = __pyx_t_2; +    __pyx_t_2 = 0;      goto __pyx_L7;    }    /*else*/ { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1950 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1951   *             # Other aligned words extend span   *             else:   *                 for i from new_e_i <= i < e_i:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_e_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_new_e_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_e_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      for (__pyx_t_9 = __pyx_t_11; __pyx_t_9 < __pyx_t_10; __pyx_t_9++) { -      __pyx_t_4 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_XDECREF(__pyx_v_i); -      __pyx_v_i = __pyx_t_4; -      __pyx_t_4 = 0; +      __pyx_v_i = __pyx_t_2; +      __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1951 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1952   *             else:   *                 for i from new_e_i <= i < e_i:   *                     if ef_span[i][0] < f_i:             # <<<<<<<<<<<<<<   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_i, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1952 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1953   *                 for i from new_e_i <= i < e_i:   *                     if ef_span[i][0] < f_i:   *                         return             # <<<<<<<<<<<<<< @@ -58602,90 +59371,98 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __pyx_L13:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1953 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1954   *                     if ef_span[i][0] < f_i:   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])             # <<<<<<<<<<<<<<   *                 for i from e_j < i <= new_e_j:   *                     if ef_span[i][0] < f_i:   */ -      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound); -      __pyx_t_4 = __pyx_v_new_min_bound; -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __pyx_v_new_min_bound; +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_6) { -        __Pyx_INCREF(__pyx_t_2); -        __pyx_t_8 = __pyx_t_2; -      } else {          __Pyx_INCREF(__pyx_t_4);          __pyx_t_8 = __pyx_t_4; +      } else { +        __Pyx_INCREF(__pyx_t_2); +        __pyx_t_8 = __pyx_t_2;        } -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_INCREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_v_new_min_bound); -      __pyx_v_new_min_bound = __pyx_t_8; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = __pyx_t_8; +      __Pyx_INCREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_v_new_min_bound); +      __pyx_v_new_min_bound = __pyx_t_4; +      __pyx_t_4 = 0; +      __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1950 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1951   *             # Other aligned words extend span   *             else:   *                 for i from new_e_i <= i < e_i:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_8 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_4 = PyInt_FromLong(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4);      __Pyx_XDECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_8; -    __pyx_t_8 = 0; +    __pyx_v_i = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1954 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1955   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   *                 for i from e_j < i <= new_e_j:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_e_j); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_e_j); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_v_new_e_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      for (__pyx_t_11 = __pyx_t_9+1; __pyx_t_11 <= __pyx_t_10; __pyx_t_11++) { -      __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_4 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_XDECREF(__pyx_v_i); -      __pyx_v_i = __pyx_t_8; -      __pyx_t_8 = 0; +      __pyx_v_i = __pyx_t_4; +      __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1955 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1956   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   *                 for i from e_j < i <= new_e_j:   *                     if ef_span[i][0] < f_i:             # <<<<<<<<<<<<<<   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_v_f_i, Py_LT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_ef_span)) { __Pyx_RaiseClosureNameError("ef_span"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_v_f_i, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1956 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1957   *                 for i from e_j < i <= new_e_j:   *                     if ef_span[i][0] < f_i:   *                         return             # <<<<<<<<<<<<<< @@ -58699,67 +59476,72 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __pyx_L16:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1957 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1958   *                     if ef_span[i][0] < f_i:   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])             # <<<<<<<<<<<<<<   *             # Extract, extend with word (unless non-terminal open)   *             if not nt_open:   */ -      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_i); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_i); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_INCREF(__pyx_v_new_min_bound); -      __pyx_t_8 = __pyx_v_new_min_bound; -      __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_8, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __pyx_v_new_min_bound; +      __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_6) { -        __Pyx_INCREF(__pyx_t_2); -        __pyx_t_4 = __pyx_t_2; -      } else {          __Pyx_INCREF(__pyx_t_8); -        __pyx_t_4 = __pyx_t_8; +        __pyx_t_2 = __pyx_t_8; +      } else { +        __Pyx_INCREF(__pyx_t_4); +        __pyx_t_2 = __pyx_t_4;        } +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_8 = __pyx_t_2; +      __Pyx_INCREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_INCREF(__pyx_t_4);        __Pyx_DECREF(__pyx_v_new_min_bound); -      __pyx_v_new_min_bound = __pyx_t_4; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_v_new_min_bound = __pyx_t_8; +      __pyx_t_8 = 0; +      __pyx_t_11 = __Pyx_PyInt_AsInt(__pyx_v_i); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1954 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1955   *                         return   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   *                 for i from e_j < i <= new_e_j:             # <<<<<<<<<<<<<<   *                     if ef_span[i][0] < f_i:   *                         return   */ -    __pyx_t_4 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_8 = PyInt_FromLong(__pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8);      __Pyx_XDECREF(__pyx_v_i); -    __pyx_v_i = __pyx_t_4; -    __pyx_t_4 = 0; +    __pyx_v_i = __pyx_t_8; +    __pyx_t_8 = 0;    }    __pyx_L7:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1959 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1960   *                     new_min_bound = max(new_min_bound, ef_span[i][1])   *             # Extract, extend with word (unless non-terminal open)   *             if not nt_open:             # <<<<<<<<<<<<<<   *                 nt_collision = False   *                 for link in al[f_j]:   */ -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_3 = (!__pyx_t_6); +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt_open); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = ((!__pyx_t_6) != 0);    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1960 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1961   *             # Extract, extend with word (unless non-terminal open)   *             if not nt_open:   *                 nt_collision = False             # <<<<<<<<<<<<<< @@ -58768,61 +59550,73 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(   */      __pyx_v_nt_collision = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1961 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1962   *             if not nt_open:   *                 nt_collision = False   *                 for link in al[f_j]:             # <<<<<<<<<<<<<<   *                     if e_nt_cover[link]:   *                         nt_collision = True   */ -    __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __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_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; +    __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) { +      __pyx_t_2 = __pyx_t_8; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;        __pyx_t_12 = NULL;      } else { -      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;      } -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      for (;;) {        if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) {          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; -        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) {          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else { -        __pyx_t_4 = __pyx_t_12(__pyx_t_2); -        if (unlikely(!__pyx_t_4)) { +        __pyx_t_8 = __pyx_t_12(__pyx_t_2); +        if (unlikely(!__pyx_t_8)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } -        __Pyx_GOTREF(__pyx_t_4); +        __Pyx_GOTREF(__pyx_t_8);        }        __Pyx_XDECREF(__pyx_v_link); -      __pyx_v_link = __pyx_t_4; -      __pyx_t_4 = 0; +      __pyx_v_link = __pyx_t_8; +      __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1962 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1963   *                 nt_collision = False   *                 for link in al[f_j]:   *                     if e_nt_cover[link]:             # <<<<<<<<<<<<<<   *                         nt_collision = True   *                 # Non-terminal collisions block word extraction and extension, but   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_e_nt_cover, __pyx_v_link); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1962; __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 = 1962; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover) == Py_None)) { +        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover), __pyx_v_link); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1963 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1964   *                 for link in al[f_j]:   *                     if e_nt_cover[link]:   *                         nt_collision = True             # <<<<<<<<<<<<<< @@ -58836,143 +59630,163 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      }      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1966 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1967   *                 # Non-terminal collisions block word extraction and extension, but   *                 # may be okay for continuing non-terminals   *                 if not nt_collision and wc < self.max_length:             # <<<<<<<<<<<<<<   *                     plus_links = []   *                     for link in al[f_j]:   */ -    __pyx_t_3 = (!__pyx_v_nt_collision); +    __pyx_t_3 = (!(__pyx_v_nt_collision != 0));      if (__pyx_t_3) { -      __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_8 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __pyx_t_5 = __pyx_t_6;      } else {        __pyx_t_5 = __pyx_t_3;      }      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1967 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1968   *                 # may be okay for continuing non-terminals   *                 if not nt_collision and wc < self.max_length:   *                     plus_links = []             # <<<<<<<<<<<<<<   *                     for link in al[f_j]:   *                         plus_links.append((f_j, link))   */ -      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_v_plus_links = __pyx_t_4; -      __pyx_t_4 = 0; +      __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_v_plus_links = ((PyObject*)__pyx_t_8); +      __pyx_t_8 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1968 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1969   *                 if not nt_collision and wc < self.max_length:   *                     plus_links = []   *                     for link in al[f_j]:             # <<<<<<<<<<<<<<   *                         plus_links.append((f_j, link))   *                         cover[link] += 1   */ -      __pyx_t_4 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __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_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; +      __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) { +        __pyx_t_2 = __pyx_t_8; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;          __pyx_t_12 = NULL;        } else { -        __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2);          __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;        } -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        for (;;) {          if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) {            if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; -          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) {            if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_8 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else { -          __pyx_t_4 = __pyx_t_12(__pyx_t_2); -          if (unlikely(!__pyx_t_4)) { +          __pyx_t_8 = __pyx_t_12(__pyx_t_2); +          if (unlikely(!__pyx_t_8)) {              if (PyErr_Occurred()) {                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              }              break;            } -          __Pyx_GOTREF(__pyx_t_4); +          __Pyx_GOTREF(__pyx_t_8);          }          __Pyx_XDECREF(__pyx_v_link); -        __pyx_v_link = __pyx_t_4; -        __pyx_t_4 = 0; +        __pyx_v_link = __pyx_t_8; +        __pyx_t_8 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1969 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1970   *                     plus_links = []   *                     for link in al[f_j]:   *                         plus_links.append((f_j, link))             # <<<<<<<<<<<<<<   *                         cover[link] += 1   *                     links.append(plus_links)   */ -        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); +        __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_8);          __Pyx_INCREF(__pyx_v_f_j); -        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_j); +        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_j);          __Pyx_GIVEREF(__pyx_v_f_j);          __Pyx_INCREF(__pyx_v_link); -        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link); +        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link);          __Pyx_GIVEREF(__pyx_v_link); -        __pyx_t_13 = PyList_Append(__pyx_v_plus_links, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +        __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_plus_links, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1970 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1971   *                     for link in al[f_j]:   *                         plus_links.append((f_j, link))   *                         cover[link] += 1             # <<<<<<<<<<<<<<   *                     links.append(plus_links)   *                     if links and f_j >= new_min_bound:   */ +        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_cover) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +        __pyx_t_14 = __pyx_cur_scope->__pyx_v_cover;          __Pyx_INCREF(__pyx_v_link); -        __pyx_t_4 = __pyx_v_link; -        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_8 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = __pyx_v_link; +        if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_t_14), __pyx_t_8); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1970; __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; +        if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        if (PyObject_SetItem(((PyObject *)__pyx_t_14), __pyx_t_8, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;        }        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1971 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1972   *                         plus_links.append((f_j, link))   *                         cover[link] += 1   *                     links.append(plus_links)             # <<<<<<<<<<<<<<   *                     if links and f_j >= new_min_bound:   *                         rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   */ -      __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_links, ((PyObject *)__pyx_v_plus_links)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_links, ((PyObject *)__pyx_v_plus_links)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1972 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1973   *                         cover[link] += 1   *                     links.append(plus_links)   *                     if links and f_j >= new_min_bound:             # <<<<<<<<<<<<<<   *                         rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                     extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   */ -      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        if (__pyx_t_5) { -        __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1972; __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[8]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          __pyx_t_6 = __pyx_t_3;        } else { @@ -58980,192 +59794,177 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1973 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1974   *                     links.append(plus_links)   *                     if links and f_j >= new_min_bound:   *                         rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))             # <<<<<<<<<<<<<<   *                     extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                     links.pop()   */ -        if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_2 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) { +          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        __pyx_t_1 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_7, __pyx_t_14); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +        if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4);          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -        __pyx_t_8 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); -        __pyx_t_15 = PyTuple_New(6); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_15);          __Pyx_INCREF(__pyx_v_f_i); -        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_f_i); +        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_i);          __Pyx_GIVEREF(__pyx_v_f_i);          __Pyx_INCREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_new_e_i); +        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_new_e_i);          __Pyx_GIVEREF(__pyx_v_new_e_i); -        PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_1); +        PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);          __Pyx_GIVEREF(__pyx_t_1); -        PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_8); -        __Pyx_GIVEREF(__pyx_t_8); +        PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_4); +        __Pyx_GIVEREF(__pyx_t_4);          __Pyx_INCREF(__pyx_v_nt); -        PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_v_nt); +        PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_nt);          __Pyx_GIVEREF(__pyx_v_nt);          __Pyx_INCREF(__pyx_v_links); -        PyTuple_SET_ITEM(__pyx_t_15, 5, __pyx_v_links); +        PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_links);          __Pyx_GIVEREF(__pyx_v_links);          __pyx_t_1 = 0; -        __pyx_t_8 = 0; -        __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -        __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -        __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_15); -        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_8); -        __Pyx_GIVEREF(__pyx_t_8); -        __pyx_t_8 = 0; -        __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_8); +        __pyx_t_4 = 0; +        __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __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_15)); __pyx_t_15 = 0; -        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +        __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;          goto __pyx_L24;        }        __pyx_L24:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1974 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1975   *                     if links and f_j >= new_min_bound:   *                         rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                     extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)             # <<<<<<<<<<<<<<   *                     links.pop()   *                     for link in al[f_j]:   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_15 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8); -      __Pyx_GIVEREF(__pyx_t_8); -      __Pyx_INCREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_new_e_i); -      __Pyx_GIVEREF(__pyx_v_new_e_i); -      __Pyx_INCREF(__pyx_v_new_e_j); -      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_new_e_j); -      __Pyx_GIVEREF(__pyx_v_new_e_j); -      __Pyx_INCREF(__pyx_v_new_min_bound); -      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_new_min_bound); -      __Pyx_GIVEREF(__pyx_v_new_min_bound); -      PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_15); -      __Pyx_GIVEREF(__pyx_t_15); -      __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_links); -      __Pyx_GIVEREF(__pyx_v_links); -      __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_4, 7, __pyx_v_nt); -      __Pyx_GIVEREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_4, 8, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __pyx_t_8 = 0; -      __pyx_t_15 = 0; -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_t_8, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __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_8); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1975 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1976   *                         rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                     extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                     links.pop()             # <<<<<<<<<<<<<<   *                     for link in al[f_j]:   *                         cover[link] -= 1   */ -      __pyx_t_2 = __Pyx_PyObject_Pop(__pyx_v_links); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1975; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_links); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1976 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1977   *                     extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                     links.pop()   *                     for link in al[f_j]:             # <<<<<<<<<<<<<<   *                         cover[link] -= 1   *             # Try to add a word to current non-terminal (if any), extract, extend   */ -      __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __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_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; +      __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_j); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) { +        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;          __pyx_t_12 = NULL;        } else { -        __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_4); -        __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext; +        __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext;        } -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        for (;;) { -        if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_4)) { -          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break; -          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; -        } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_4)) { -          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break; -          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; +        if (!__pyx_t_12 && PyList_CheckExact(__pyx_t_2)) { +          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif +        } else if (!__pyx_t_12 && PyTuple_CheckExact(__pyx_t_2)) { +          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; +          #if CYTHON_COMPILING_IN_CPYTHON +          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #else +          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          #endif          } else { -          __pyx_t_2 = __pyx_t_12(__pyx_t_4); -          if (unlikely(!__pyx_t_2)) { +          __pyx_t_1 = __pyx_t_12(__pyx_t_2); +          if (unlikely(!__pyx_t_1)) {              if (PyErr_Occurred()) {                if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +              else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}              }              break;            } -          __Pyx_GOTREF(__pyx_t_2); +          __Pyx_GOTREF(__pyx_t_1);          }          __Pyx_XDECREF(__pyx_v_link); -        __pyx_v_link = __pyx_t_2; -        __pyx_t_2 = 0; +        __pyx_v_link = __pyx_t_1; +        __pyx_t_1 = 0; -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1977 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1978   *                     links.pop()   *                     for link in al[f_j]:   *                         cover[link] -= 1             # <<<<<<<<<<<<<<   *             # Try to add a word to current non-terminal (if any), extract, extend   *             if nt and nt[-1][2] == f_j - 1:   */ +        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_cover) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +        __pyx_t_14 = __pyx_cur_scope->__pyx_v_cover;          __Pyx_INCREF(__pyx_v_link); -        __pyx_t_2 = __pyx_v_link; -        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_15 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_2); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_15); -        __pyx_t_8 = PyNumber_InPlaceSubtract(__pyx_t_15, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __pyx_v_link; +        if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_t_14), __pyx_t_1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_8); -        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -        if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        if (PyObject_SetItem(__pyx_cur_scope->__pyx_v_cover, __pyx_t_2, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4);          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +        if (unlikely(((PyObject *)__pyx_t_14) == Py_None)) { +          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        if (PyObject_SetItem(((PyObject *)__pyx_t_14), __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1978; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +        __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;        } -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        goto __pyx_L21;      }      __pyx_L21:; @@ -59173,128 +59972,126 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    }    __pyx_L17:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1979 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1980   *                         cover[link] -= 1   *             # Try to add a word to current non-terminal (if any), extract, extend   *             if nt and nt[-1][2] == f_j - 1:             # <<<<<<<<<<<<<<   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]   */ -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_6) { -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __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; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      __pyx_t_3 = __pyx_t_5;    } else {      __pyx_t_3 = __pyx_t_6;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1981 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1982   *             if nt and nt[-1][2] == f_j - 1:   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]             # <<<<<<<<<<<<<<   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:   */ -    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_t_8, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1981; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_v_old_last_nt = __pyx_t_4; -    __pyx_t_4 = 0; +    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, NULL, NULL, &__pyx_k_slice_140, 0, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_v_old_last_nt = __pyx_t_2; +    __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1982 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1983   *                 # Add to non-terminal, checking for collisions   *                 old_last_nt = nt[-1][:]   *                 nt[-1][2] = f_j             # <<<<<<<<<<<<<<   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   */ -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    if (__Pyx_SetItemInt(__pyx_t_4, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    if (__Pyx_SetItemInt(__pyx_t_2, 2, __pyx_v_f_j, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1983 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1984   *                 old_last_nt = nt[-1][:]   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:             # <<<<<<<<<<<<<<   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_8, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1984 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1985   *                 nt[-1][2] = f_j   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):             # <<<<<<<<<<<<<<   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_8); -      __Pyx_GIVEREF(__pyx_t_8); -      __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __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_1)); __pyx_t_1 = 0; +      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_6 = (!__pyx_t_3); +      __pyx_t_6 = ((!__pyx_t_3) != 0);        if (__pyx_t_6) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1985 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1986   *                 if link_i < nt[-1][3]:   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)   */ -        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1986 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1987   *                     if not span_check(cover, link_i, nt[-1][3] - 1):   *                         nt[-1] = old_last_nt   *                         return             # <<<<<<<<<<<<<< @@ -59308,157 +60105,156 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __pyx_L29:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1987 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1988   *                         nt[-1] = old_last_nt   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i   */ -      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_1); +      __Pyx_GIVEREF(__pyx_t_1); +      __pyx_t_1 = 0; +      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1988 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1989   *                         return   *                     span_inc(cover, link_i, nt[-1][3] - 1)   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Subtract(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2); +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __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_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1989 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1990   *                     span_inc(cover, link_i, nt[-1][3] - 1)   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i             # <<<<<<<<<<<<<<   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   */ -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (__Pyx_SetItemInt(__pyx_t_4, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1989; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (__Pyx_SetItemInt(__pyx_t_2, 3, __pyx_v_link_i, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        goto __pyx_L28;      }      __pyx_L28:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1990 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1991   *                     span_inc(e_nt_cover, link_i, nt[-1][3] - 1)   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:             # <<<<<<<<<<<<<<   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt   */ -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_8); -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_8, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (__pyx_t_6) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1991 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1992   *                     nt[-1][3] = link_i   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):             # <<<<<<<<<<<<<<   *                         nt[-1] = old_last_nt   *                         return   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8); -      __Pyx_GIVEREF(__pyx_t_8); +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); +      __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __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_1)); __pyx_t_1 = 0; +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1991; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_3 = (!__pyx_t_6); +      __pyx_t_3 = ((!__pyx_t_6) != 0);        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1992 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1993   *                 if link_j > nt[-1][4]:   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)   */ -        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1993 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1994   *                     if not span_check(cover, nt[-1][4] + 1, link_j):   *                         nt[-1] = old_last_nt   *                         return             # <<<<<<<<<<<<<< @@ -59472,409 +60268,368 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(        }        __pyx_L31:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1994 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1995   *                         nt[-1] = old_last_nt   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j   */ -      __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); +      __Pyx_GIVEREF(__pyx_t_1);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_1 = 0; +      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1995 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1996   *                         return   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     nt[-1][4] = link_j   *                 if links and f_j >= new_min_bound:   */ -      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Add(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __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_t_4)); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1996 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1997   *                     span_inc(cover, nt[-1][4] + 1, link_j)   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j             # <<<<<<<<<<<<<<   *                 if links and f_j >= new_min_bound:   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   */ -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      if (__Pyx_SetItemInt(__pyx_t_4, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1996; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (__Pyx_SetItemInt(__pyx_t_2, 4, __pyx_v_link_j, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        goto __pyx_L30;      }      __pyx_L30:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1997 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1998   *                     span_inc(e_nt_cover, nt[-1][4] + 1, link_j)   *                     nt[-1][4] = link_j   *                 if links and f_j >= new_min_bound:             # <<<<<<<<<<<<<<   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   */ -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_3) { -      __pyx_t_4 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __pyx_t_5 = __pyx_t_6;      } else {        __pyx_t_5 = __pyx_t_3;      }      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1998 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1999   *                     nt[-1][4] = link_j   *                 if links and f_j >= new_min_bound:   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_2 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_7, __pyx_t_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) { +        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_15 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_15); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __pyx_t_15 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_4, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_4, NULL, 0, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_f_i); +      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i);        __Pyx_GIVEREF(__pyx_v_f_i);        __Pyx_INCREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_new_e_i); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_e_i);        __Pyx_GIVEREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2); -      __Pyx_GIVEREF(__pyx_t_2); -      PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_15); -      __Pyx_GIVEREF(__pyx_t_15); +      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1); +      __Pyx_GIVEREF(__pyx_t_1); +      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_8); +      __Pyx_GIVEREF(__pyx_t_8);        __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_nt); +      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_nt);        __Pyx_GIVEREF(__pyx_v_nt);        __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_links); +      PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_links);        __Pyx_GIVEREF(__pyx_v_links); -      __pyx_t_2 = 0; -      __pyx_t_15 = 0; -      __pyx_t_15 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); +      __pyx_t_1 = 0; +      __pyx_t_8 = 0; +      __pyx_t_8 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_15); -      __Pyx_GIVEREF(__pyx_t_15); -      __pyx_t_15 = 0; -      __pyx_t_15 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1998; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;        goto __pyx_L32;      }      __pyx_L32:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1999 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2000   *                 if links and f_j >= new_min_bound:   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)             # <<<<<<<<<<<<<<   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_15 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f_i); -    __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_15); -    __Pyx_GIVEREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_v_new_e_i); -    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_new_e_i); -    __Pyx_GIVEREF(__pyx_v_new_e_i); -    __Pyx_INCREF(__pyx_v_new_e_j); -    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_new_e_j); -    __Pyx_GIVEREF(__pyx_v_new_e_j); -    __Pyx_INCREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_v_new_min_bound); -    __Pyx_GIVEREF(__pyx_v_new_min_bound); -    __Pyx_INCREF(__pyx_v_wc); -    PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_v_wc); -    __Pyx_GIVEREF(__pyx_v_wc); -    __Pyx_INCREF(__pyx_v_links); -    PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_v_links); -    __Pyx_GIVEREF(__pyx_v_links); -    __Pyx_INCREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_4, 7, __pyx_v_nt); -    __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_4, 8, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    __pyx_t_15 = 0; -    __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_8, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_v_wc, __pyx_v_links, __pyx_v_nt, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2000 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2001   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt             # <<<<<<<<<<<<<<   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   */ -    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2000; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_v_nt, -1, __pyx_v_old_last_nt, sizeof(long), PyInt_FromLong, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2001 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2002   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc, links, nt, False)   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __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_RichCompare(__pyx_v_link_i, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2002 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2003   *                 nt[-1] = old_last_nt   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   */ -      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Subtract(__pyx_t_15, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Subtract(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);        __Pyx_GIVEREF(__pyx_t_4);        __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2002; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2003 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2004   *                 if link_i < nt[-1][3]:   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)             # <<<<<<<<<<<<<<   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_15 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_15, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __pyx_t_15 = PyNumber_Subtract(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_8 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));        __Pyx_INCREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_link_i); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);        __Pyx_GIVEREF(__pyx_v_link_i); -      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_15); -      __Pyx_GIVEREF(__pyx_t_15); -      __pyx_t_15 = 0; -      __pyx_t_15 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); +      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_8); +      __Pyx_GIVEREF(__pyx_t_8); +      __pyx_t_8 = 0; +      __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        goto __pyx_L33;      }      __pyx_L33:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2004 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2005   *                     span_dec(cover, link_i, nt[-1][3] - 1)   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:             # <<<<<<<<<<<<<<   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   */ -    __pyx_t_15 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_15, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -    __pyx_t_15 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +    __pyx_t_8 = PyObject_RichCompare(__pyx_v_link_j, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      if (__pyx_t_5) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2005 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2006   *                     span_dec(e_nt_cover, link_i, nt[-1][3] - 1)   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *             # Try to start a new non-terminal, extract, extend   */ -      __pyx_t_15 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __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_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); -      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); +      __Pyx_GIVEREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_link_j);        PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j); -      __pyx_t_1 = 0; -      __pyx_t_1 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +      __pyx_t_2 = 0; +      __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_DECREF(((PyObject *)__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; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2006 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2007   *                 if link_j > nt[-1][4]:   *                     span_dec(cover, nt[-1][4] + 1, link_j)   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)             # <<<<<<<<<<<<<<   *             # Try to start a new non-terminal, extract, extend   *             if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:   */ -      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyNumber_Add(__pyx_t_15, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_t_8, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -      PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_4); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4);        __Pyx_GIVEREF(__pyx_t_4);        __Pyx_INCREF(__pyx_v_link_j); -      PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);        __Pyx_GIVEREF(__pyx_v_link_j);        __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        goto __pyx_L34;      } @@ -59883,85 +60638,83 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    }    __pyx_L27:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2008 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2009   *                     span_dec(e_nt_cover, nt[-1][4] + 1, link_j)   *             # Try to start a new non-terminal, extract, extend   *             if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:             # <<<<<<<<<<<<<<   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):   */ -  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_t_3 = (!__pyx_t_5);    if (!__pyx_t_3) { -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); +    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_4, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_t_15); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_Subtract(__pyx_v_f_j, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -    __pyx_t_15 = PyObject_RichCompare(__pyx_t_4, __pyx_int_1, Py_GT); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +    __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;      __pyx_t_6 = __pyx_t_5;    } else {      __pyx_t_6 = __pyx_t_3;    }    if (__pyx_t_6) { -    __pyx_t_15 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_15, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      if (__pyx_t_3) { -      __pyx_t_7 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_t_5 = (__pyx_t_7 < __pyx_cur_scope->__pyx_v_self->max_nonterminals); -      __pyx_t_16 = __pyx_t_5; +      __pyx_t_15 = __pyx_t_5;      } else { -      __pyx_t_16 = __pyx_t_3; +      __pyx_t_15 = __pyx_t_3;      } -    __pyx_t_3 = __pyx_t_16; +    __pyx_t_3 = __pyx_t_15;    } else {      __pyx_t_3 = __pyx_t_6;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2010 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2011   *             if (not nt or f_j - nt[-1][2] > 1) and wc < self.max_length and len(nt) < self.max_nonterminals:   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):             # <<<<<<<<<<<<<<   *                     return   *                 span_inc(cover, link_i, link_j)   */ -    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_check); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_cover); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +    if (unlikely(!__pyx_cur_scope->__pyx_v_cover)) { __Pyx_RaiseClosureNameError("cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __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_15)); __pyx_t_15 = 0; -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_6 = (!__pyx_t_3); +    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_6 = ((!__pyx_t_3) != 0);      if (__pyx_t_6) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2011 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2012   *                 # Check for collisions   *                 if not span_check(cover, link_i, link_j):   *                     return             # <<<<<<<<<<<<<< @@ -59975,299 +60728,261 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(      }      __pyx_L36:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2012 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2013   *                 if not span_check(cover, link_i, link_j):   *                     return   *                 span_inc(cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 span_inc(e_nt_cover, link_i, link_j)   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   */ -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_cover); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2013 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2014   *                     return   *                 span_inc(cover, link_i, link_j)   *                 span_inc(e_nt_cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   *                 # Require at least one word in phrase   */ -    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_inc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); +    if (unlikely(!__pyx_cur_scope->__pyx_v_e_nt_cover)) { __Pyx_RaiseClosureNameError("e_nt_cover"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +    PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __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_15)); __pyx_t_15 = 0; -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2014 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2015   *                 span_inc(cover, link_i, link_j)   *                 span_inc(e_nt_cover, link_i, link_j)   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])             # <<<<<<<<<<<<<<   *                 # Require at least one word in phrase   *                 if links and f_j >= new_min_bound:   */ -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_6) { -      __pyx_t_15 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_15) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_15, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __pyx_t_15 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      __pyx_t_8 = PyNumber_Add(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_1 = __pyx_t_15; -      __pyx_t_15 = 0; +      __pyx_t_2 = __pyx_t_8; +      __pyx_t_8 = 0;      } else {        __Pyx_INCREF(__pyx_int_1); -      __pyx_t_1 = __pyx_int_1; +      __pyx_t_2 = __pyx_int_1;      } -    __pyx_t_15 = PyList_New(5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); +    __pyx_t_8 = PyList_New(5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); +    __Pyx_GIVEREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_f_j); -    PyList_SET_ITEM(__pyx_t_15, 1, __pyx_v_f_j); +    PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_f_j);      __Pyx_GIVEREF(__pyx_v_f_j);      __Pyx_INCREF(__pyx_v_f_j); -    PyList_SET_ITEM(__pyx_t_15, 2, __pyx_v_f_j); +    PyList_SET_ITEM(__pyx_t_8, 2, __pyx_v_f_j);      __Pyx_GIVEREF(__pyx_v_f_j);      __Pyx_INCREF(__pyx_v_link_i); -    PyList_SET_ITEM(__pyx_t_15, 3, __pyx_v_link_i); +    PyList_SET_ITEM(__pyx_t_8, 3, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyList_SET_ITEM(__pyx_t_15, 4, __pyx_v_link_j); +    PyList_SET_ITEM(__pyx_t_8, 4, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_1 = 0; -    __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_nt, ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_2 = 0; +    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_nt, ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2016 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2017   *                 nt.append([(nt[-1][0] + 1) if nt else 1, f_j, f_j, link_i, link_j])   *                 # Require at least one word in phrase   *                 if links and f_j >= new_min_bound:             # <<<<<<<<<<<<<<   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   */ -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_links); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      if (__pyx_t_6) { -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2016; __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[8]; __pyx_lineno = 2016; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_16 = __pyx_t_3; +      __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_v_new_min_bound, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_15 = __pyx_t_3;      } else { -      __pyx_t_16 = __pyx_t_6; +      __pyx_t_15 = __pyx_t_6;      } -    if (__pyx_t_16) { +    if (__pyx_t_15) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2017 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2018   *                 # Require at least one word in phrase   *                 if links and f_j >= new_min_bound:   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 nt.pop()   */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_rules, __pyx_n_s__add); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_15 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_15); -      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_f_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_f_words, __pyx_t_7, __pyx_t_14); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_rules)) { __Pyx_RaiseClosureNameError("rules"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_rules) == Py_None)) { +        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add"); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__form_rule); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_f_words, 0, 0, &__pyx_v_f_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_v_new_e_i); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +      if (unlikely(!__pyx_cur_scope->__pyx_v_e_words)) { __Pyx_RaiseClosureNameError("e_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_8 = PyNumber_Add(__pyx_v_new_e_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_e_words, 0, 0, &__pyx_v_new_e_i, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -      __pyx_t_8 = __Pyx_PySequence_GetSlice(__pyx_cur_scope->__pyx_v_e_words, __pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8); -      __pyx_t_2 = PyTuple_New(6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2);        __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); +      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_f_i);        __Pyx_GIVEREF(__pyx_v_f_i);        __Pyx_INCREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_new_e_i); +      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_new_e_i);        __Pyx_GIVEREF(__pyx_v_new_e_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); +      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);        __Pyx_GIVEREF(__pyx_t_4); -      PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8); -      __Pyx_GIVEREF(__pyx_t_8); +      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_1); +      __Pyx_GIVEREF(__pyx_t_1);        __Pyx_INCREF(__pyx_v_nt); -      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_nt); +      PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_nt);        __Pyx_GIVEREF(__pyx_v_nt);        __Pyx_INCREF(__pyx_v_links); -      PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_links); +      PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_links);        __Pyx_GIVEREF(__pyx_v_links);        __pyx_t_4 = 0; -      __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_Call(__pyx_t_15, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); -      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; -      __Pyx_DECREF(((PyObject *)__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 = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); -      __Pyx_GIVEREF(__pyx_t_8); -      __pyx_t_8 = 0; -      __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_8); +      __pyx_t_1 = 0; +      __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; +      __pyx_t_13 = PySet_Add(__pyx_cur_scope->__pyx_v_rules, __pyx_t_1); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        goto __pyx_L37;      }      __pyx_L37:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2018 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2019   *                 if links and f_j >= new_min_bound:   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)             # <<<<<<<<<<<<<<   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_8 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_8 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_15 = PyTuple_New(9); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_f_i); -    __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_8); -    __Pyx_GIVEREF(__pyx_t_8); -    __Pyx_INCREF(__pyx_v_new_e_i); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_new_e_i); -    __Pyx_GIVEREF(__pyx_v_new_e_i); -    __Pyx_INCREF(__pyx_v_new_e_j); -    PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_v_new_e_j); -    __Pyx_GIVEREF(__pyx_v_new_e_j); -    __Pyx_INCREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_v_new_min_bound); -    __Pyx_GIVEREF(__pyx_v_new_min_bound); -    PyTuple_SET_ITEM(__pyx_t_15, 5, __pyx_t_2); -    __Pyx_GIVEREF(__pyx_t_2); -    __Pyx_INCREF(__pyx_v_links); -    PyTuple_SET_ITEM(__pyx_t_15, 6, __pyx_v_links); -    __Pyx_GIVEREF(__pyx_v_links); -    __Pyx_INCREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_15, 7, __pyx_v_nt); -    __Pyx_GIVEREF(__pyx_v_nt); -    PyTuple_SET_ITEM(__pyx_t_15, 8, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    __pyx_t_8 = 0; -    __pyx_t_2 = 0; -    __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_new_e_i, __pyx_v_new_e_j, __pyx_v_new_min_bound, __pyx_t_8, __pyx_v_links, __pyx_v_nt, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __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_8); __pyx_t_8 = 0; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2019 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2020   *                     rules.add(self.form_rule(f_i, new_e_i, f_words[f_i:f_j + 1], e_words[new_e_i:new_e_j + 1], nt, links))   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 nt.pop()             # <<<<<<<<<<<<<<   *                 span_dec(cover, link_i, link_j)   *                 span_dec(e_nt_cover, link_i, link_j)   */ -    __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_nt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_nt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2020 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2021   *                 extract(f_i, f_j + 1, new_e_i, new_e_j, new_min_bound, wc + 1, links, nt, False)   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)             # <<<<<<<<<<<<<<   *                 span_dec(e_nt_cover, link_i, link_j)   *    */ -    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cover); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_cover); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cover); +    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_2); +    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cover)); +    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cover));      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2020; __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_t_15)); __pyx_t_15 = 0; -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2021 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2022   *                 nt.pop()   *                 span_dec(cover, link_i, link_j)   *                 span_dec(e_nt_cover, link_i, link_j)             # <<<<<<<<<<<<<<   *    *         # Try to extract phrases from every f index   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__span_dec); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__span_dec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_8); +    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_15); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_nt_cover); -    PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_cur_scope->__pyx_v_e_nt_cover); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_nt_cover); +    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover)); +    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_e_nt_cover));      __Pyx_INCREF(__pyx_v_link_i); -    PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_link_i); +    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_link_i);      __Pyx_GIVEREF(__pyx_v_link_i);      __Pyx_INCREF(__pyx_v_link_j); -    PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_v_link_j); +    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_link_j);      __Pyx_GIVEREF(__pyx_v_link_j); -    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_15), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0; -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      goto __pyx_L35;    }    __pyx_L35:; @@ -60279,7 +60994,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    __Pyx_XDECREF(__pyx_t_2);    __Pyx_XDECREF(__pyx_t_4);    __Pyx_XDECREF(__pyx_t_8); -  __Pyx_XDECREF(__pyx_t_15); +  __Pyx_XDECREF(((PyObject *)__pyx_t_14));    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.add_instance.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -60297,7 +61012,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1884 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1885   *     # Aggregate stats from a training instance   *     # (Extract rules, update counts)   *     def add_instance(self, f_words, e_words, alignment):             # <<<<<<<<<<<<<< @@ -60342,7 +61057,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("add_instance", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(__pyx_ptype_3_sa___pyx_scope_struct_21_add_instance, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -60358,7 +61073,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e_words);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e_words); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1886 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1887   *     def add_instance(self, f_words, e_words, alignment):   *    *         self.online = True             # <<<<<<<<<<<<<< @@ -60367,20 +61082,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   */    __pyx_cur_scope->__pyx_v_self->online = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1893 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1894   *         # span more than once.   *         # (f, e, al, lex_f_i, lex_f_j)   *         rules = set()             # <<<<<<<<<<<<<<   *    *         f_len = len(f_words)   */ -  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1893; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_rules = ((PyObject *)__pyx_t_1); +  __pyx_cur_scope->__pyx_v_rules = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1895 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1896   *         rules = set()   *    *         f_len = len(f_words)             # <<<<<<<<<<<<<< @@ -60389,15 +61104,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   */    __pyx_t_1 = __pyx_cur_scope->__pyx_v_f_words;    __Pyx_INCREF(__pyx_t_1); -  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_cur_scope->__pyx_v_f_len = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1896 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1897   *    *         f_len = len(f_words)   *         e_len = len(e_words)             # <<<<<<<<<<<<<< @@ -60406,35 +61121,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   */    __pyx_t_1 = __pyx_cur_scope->__pyx_v_e_words;    __Pyx_INCREF(__pyx_t_1); -  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_e_len = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1899 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1900   *    *         # Pre-compute alignment info   *         al = [[] for i in range(f_len)]             # <<<<<<<<<<<<<<   *         fe_span = [[e_len + 1, -1] for i in range(f_len)]   *         ef_span = [[f_len + 1, -1] for i in range(e_len)]   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __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 = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_len);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f_len);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_len); -  __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    } @@ -60442,16 +61157,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -60460,39 +61183,38 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1899; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1));    __pyx_cur_scope->__pyx_v_al = ((PyObject *)__pyx_t_1); -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1900 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1901   *         # Pre-compute alignment info   *         al = [[] for i in range(f_len)]   *         fe_span = [[e_len + 1, -1] for i in range(f_len)]             # <<<<<<<<<<<<<<   *         ef_span = [[f_len + 1, -1] for i in range(e_len)] - *         for (f, e) in alignment: + *         for f, e in alignment:   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __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 = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_len);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f_len);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_len); -  __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    } @@ -60500,16 +61222,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -60518,9 +61248,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Add(__pyx_v_e_len, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_Add(__pyx_v_e_len, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);      __Pyx_GIVEREF(__pyx_t_4); @@ -60528,37 +61258,36 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      PyList_SET_ITEM(__pyx_t_6, 1, __pyx_int_neg_1);      __Pyx_GIVEREF(__pyx_int_neg_1);      __pyx_t_4 = 0; -    if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1900; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_fe_span = ((PyObject *)__pyx_t_1); -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_cur_scope->__pyx_v_fe_span = ((PyObject*)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1901 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1902   *         al = [[] for i in range(f_len)]   *         fe_span = [[e_len + 1, -1] for i in range(f_len)]   *         ef_span = [[f_len + 1, -1] for i in range(e_len)]             # <<<<<<<<<<<<<< - *         for (f, e) in alignment: + *         for f, e in alignment:   *             al[f].append(e)   */ -  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __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 = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(__pyx_v_e_len);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_e_len);    __Pyx_GIVEREF(__pyx_v_e_len); -  __pyx_t_6 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_6);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {      __pyx_t_3 = __pyx_t_6; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    } @@ -60566,16 +61295,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _    for (;;) {      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break; -      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_6); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_6 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_6)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -60584,9 +61321,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_6;      __pyx_t_6 = 0; -    __pyx_t_6 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);      __Pyx_GIVEREF(__pyx_t_6); @@ -60594,19 +61331,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_neg_1);      __Pyx_GIVEREF(__pyx_int_neg_1);      __pyx_t_6 = 0; -    if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_ef_span = ((PyObject *)__pyx_t_1); -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_cur_scope->__pyx_v_ef_span = ((PyObject*)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1902 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1903   *         fe_span = [[e_len + 1, -1] for i in range(f_len)]   *         ef_span = [[f_len + 1, -1] for i in range(e_len)] - *         for (f, e) in alignment:             # <<<<<<<<<<<<<< + *         for f, e in alignment:             # <<<<<<<<<<<<<<   *             al[f].append(e)   *             fe_span[f][0] = min(fe_span[f][0], e)   */ @@ -60614,23 +61350,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_1 = __pyx_v_alignment; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_alignment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_alignment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_3 = __pyx_t_5(__pyx_t_1);        if (unlikely(!__pyx_t_3)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -60638,29 +61382,37 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {        PyObject* sequence = __pyx_t_3; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 2)) { +        if (size > 2) __Pyx_RaiseTooManyValuesError(2); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_4 = PyList_GET_ITEM(sequence, 0);           __pyx_t_6 = PyList_GET_ITEM(sequence, 1);         }        __Pyx_INCREF(__pyx_t_4);        __Pyx_INCREF(__pyx_t_6); +      #else +      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      #endif        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1; -      __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; @@ -60668,14 +61420,15 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __Pyx_GOTREF(__pyx_t_4);        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;        __Pyx_GOTREF(__pyx_t_6); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L12_unpacking_done;        __pyx_L11_unpacking_failed:;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1902; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L12_unpacking_done:;      }      __Pyx_XDECREF(__pyx_v_f); @@ -60685,22 +61438,22 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_e = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1903 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1904   *         ef_span = [[f_len + 1, -1] for i in range(e_len)] - *         for (f, e) in alignment: + *         for f, e in alignment:   *             al[f].append(e)             # <<<<<<<<<<<<<<   *             fe_span[f][0] = min(fe_span[f][0], e)   *             fe_span[f][1] = max(fe_span[f][1], e)   */ -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_al, __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_6 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_e); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_e); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __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_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1904 - *         for (f, e) in alignment: +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1905 + *         for f, e in alignment:   *             al[f].append(e)   *             fe_span[f][0] = min(fe_span[f][0], e)             # <<<<<<<<<<<<<<   *             fe_span[f][1] = max(fe_span[f][1], e) @@ -60708,14 +61461,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   */      __Pyx_INCREF(__pyx_v_e);      __pyx_t_6 = __pyx_v_e; -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_9) {        __Pyx_INCREF(__pyx_t_6); @@ -60726,13 +61478,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); -    if (__Pyx_SetItemInt(__pyx_t_6, 0, __pyx_t_3, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __pyx_t_6 = __pyx_t_3; +    __Pyx_INCREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    if (__Pyx_SetItemInt(__pyx_t_3, 0, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1905 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1906   *             al[f].append(e)   *             fe_span[f][0] = min(fe_span[f][0], e)   *             fe_span[f][1] = max(fe_span[f][1], e)             # <<<<<<<<<<<<<< @@ -60740,32 +61495,34 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   *             ef_span[e][1] = max(ef_span[e][1], f)   */      __Pyx_INCREF(__pyx_v_e); -    __pyx_t_3 = __pyx_v_e; -    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __pyx_v_e; +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_9) { -      __Pyx_INCREF(__pyx_t_3); -      __pyx_t_6 = __pyx_t_3; +      __Pyx_INCREF(__pyx_t_6); +      __pyx_t_3 = __pyx_t_6;      } else {        __Pyx_INCREF(__pyx_t_4); -      __pyx_t_6 = __pyx_t_4; +      __pyx_t_3 = __pyx_t_4;      }      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __pyx_t_6 = __pyx_t_3; +    __Pyx_INCREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_fe_span, __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_fe_span), __pyx_v_f); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1906 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1907   *             fe_span[f][0] = min(fe_span[f][0], e)   *             fe_span[f][1] = max(fe_span[f][1], e)   *             ef_span[e][0] = min(ef_span[e][0], f)             # <<<<<<<<<<<<<< @@ -60774,14 +61531,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   */      __Pyx_INCREF(__pyx_v_f);      __pyx_t_6 = __pyx_v_f; -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_9) {        __Pyx_INCREF(__pyx_t_6); @@ -60792,13 +61548,16 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_e); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); -    if (__Pyx_SetItemInt(__pyx_t_6, 0, __pyx_t_3, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __pyx_t_6 = __pyx_t_3; +    __Pyx_INCREF(__pyx_t_6); +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    if (__Pyx_SetItemInt(__pyx_t_3, 0, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1907 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1908   *             fe_span[f][1] = max(fe_span[f][1], e)   *             ef_span[e][0] = min(ef_span[e][0], f)   *             ef_span[e][1] = max(ef_span[e][1], f)             # <<<<<<<<<<<<<< @@ -60806,133 +61565,135 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   *         # Target side word coverage   */      __Pyx_INCREF(__pyx_v_f); -    __pyx_t_3 = __pyx_v_f; -    __pyx_t_6 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_e); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __pyx_v_f; +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_9) { -      __Pyx_INCREF(__pyx_t_3); -      __pyx_t_6 = __pyx_t_3; +      __Pyx_INCREF(__pyx_t_6); +      __pyx_t_3 = __pyx_t_6;      } else {        __Pyx_INCREF(__pyx_t_4); -      __pyx_t_6 = __pyx_t_4; +      __pyx_t_3 = __pyx_t_4;      }      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +    __pyx_t_6 = __pyx_t_3; +    __Pyx_INCREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_ef_span, __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_ef_span), __pyx_v_e); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_3, 1, __pyx_t_6, sizeof(long), PyInt_FromLong, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1910 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1911   *    *         # Target side word coverage   *         cover = [0] * e_len             # <<<<<<<<<<<<<<   *         # Non-terminal coverage   *         f_nt_cover = [0] * f_len   */ -  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_int_0);    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);    __Pyx_GIVEREF(__pyx_int_0); -  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_temp);      __Pyx_DECREF(__pyx_t_1);      __pyx_t_1 = __pyx_temp;    }    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_cover = ((PyObject *)__pyx_t_1); +  __pyx_cur_scope->__pyx_v_cover = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1912 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1913   *         cover = [0] * e_len   *         # Non-terminal coverage   *         f_nt_cover = [0] * f_len             # <<<<<<<<<<<<<<   *         e_nt_cover = [0] * e_len   *    */ -  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_int_0);    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);    __Pyx_GIVEREF(__pyx_int_0); -  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_f_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_cur_scope->__pyx_v_f_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_temp);      __Pyx_DECREF(__pyx_t_1);      __pyx_t_1 = __pyx_temp;    } -  __pyx_v_f_nt_cover = __pyx_t_1; +  __pyx_v_f_nt_cover = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1913 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1914   *         # Non-terminal coverage   *         f_nt_cover = [0] * f_len   *         e_nt_cover = [0] * e_len             # <<<<<<<<<<<<<<   *    *         # Extract all possible hierarchical phrases starting at a source index   */ -  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_int_0);    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);    __Pyx_GIVEREF(__pyx_int_0); -  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_e_len); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_temp);      __Pyx_DECREF(__pyx_t_1);      __pyx_t_1 = __pyx_temp;    }    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_e_nt_cover = ((PyObject *)__pyx_t_1); +  __pyx_cur_scope->__pyx_v_e_nt_cover = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1918 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919   *         # f_ i and j are current, e_ i and j are previous   *         # We care _considering_ f_j, so it is not yet in counts   *         def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):             # <<<<<<<<<<<<<<   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   */ -  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_12add_instance_1extract, 0, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_136)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_12add_instance_1extract, 0, __pyx_n_s_144, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_142)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_cur_scope->__pyx_v_extract = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2024 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2025   *    *         # Try to extract phrases from every f index   *         for f_i from 0 <= f_i < f_len:             # <<<<<<<<<<<<<<   *             # Skip if phrases won't be tight on left side   *             if not al[f_i]:   */ -  __pyx_t_10 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_10 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    for (__pyx_v_f_i = 0; __pyx_v_f_i < __pyx_t_10; __pyx_v_f_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2026 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2027   *         for f_i from 0 <= f_i < f_len:   *             # Skip if phrases won't be tight on left side   *             if not al[f_i]:             # <<<<<<<<<<<<<<   *                 continue   *             extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False)   */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_i, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_al, __pyx_v_f_i, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2026; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_11 = (!__pyx_t_9); +    __pyx_t_11 = ((!__pyx_t_9) != 0);      if (__pyx_t_11) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2027 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2028   *             # Skip if phrases won't be tight on left side   *             if not al[f_i]:   *                 continue             # <<<<<<<<<<<<<< @@ -60944,103 +61705,88 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      __pyx_L15:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2028 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2029   *             if not al[f_i]:   *                 continue   *             extract(f_i, f_i, f_len + 1, -1, f_i, 0, [], [], False)             # <<<<<<<<<<<<<<   *    *         # Update possible phrases (samples)   */ -    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_6 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12); -    __pyx_t_13 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_13 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_13); -    __pyx_t_14 = PyTuple_New(9); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = __pyx_pf_3_sa_23HieroCachingRuleFactory_12add_instance_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_t_1, __pyx_t_6, __pyx_t_3, __pyx_int_neg_1, __pyx_t_4, __pyx_int_0, ((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_12), __pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_14); -    PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_6); -    __Pyx_GIVEREF(__pyx_t_6); -    PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_3); -    __Pyx_GIVEREF(__pyx_t_3); -    __Pyx_INCREF(__pyx_int_neg_1); -    PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_int_neg_1); -    __Pyx_GIVEREF(__pyx_int_neg_1); -    PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); -    __Pyx_INCREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_14, 5, __pyx_int_0); -    __Pyx_GIVEREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_14, 6, ((PyObject *)__pyx_t_7)); -    __Pyx_GIVEREF(((PyObject *)__pyx_t_7)); -    PyTuple_SET_ITEM(__pyx_t_14, 7, ((PyObject *)__pyx_t_12)); -    __Pyx_GIVEREF(((PyObject *)__pyx_t_12)); -    PyTuple_SET_ITEM(__pyx_t_14, 8, __pyx_t_13); -    __Pyx_GIVEREF(__pyx_t_13); -    __pyx_t_1 = 0; -    __pyx_t_6 = 0; -    __pyx_t_3 = 0; -    __pyx_t_4 = 0; -    __pyx_t_7 = 0; -    __pyx_t_12 = 0; -    __pyx_t_13 = 0; -    __pyx_t_13 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2028; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); -    __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __Pyx_DECREF(__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(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;      __pyx_L13_continue:;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2033 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2034   *         # This could be more efficiently integrated with extraction   *         # at the cost of readability - *         for (f, lex_i, lex_j) in self.get_f_phrases(f_words):             # <<<<<<<<<<<<<< + *         for f, lex_i, lex_j in self.get_f_phrases(f_words):             # <<<<<<<<<<<<<<   *             self.samples_f[f] += 1   *    */ -  __pyx_t_13 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_13); -  __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s__get_f_phrases); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_14); +  __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_13);    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_words); -  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_cur_scope->__pyx_v_f_words); +  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_cur_scope->__pyx_v_f_words);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_words); -  __pyx_t_12 = PyObject_Call(__pyx_t_13, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_12 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_13), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_12); -  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0; +  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;    if (PyList_CheckExact(__pyx_t_12) || PyTuple_CheckExact(__pyx_t_12)) { -    __pyx_t_14 = __pyx_t_12; __Pyx_INCREF(__pyx_t_14); __pyx_t_2 = 0; +    __pyx_t_13 = __pyx_t_12; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_5 = Py_TYPE(__pyx_t_14)->tp_iternext; +    __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;    }    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;    for (;;) { -    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_12 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; -    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; +    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_12 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_12 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif +    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_12 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else { -      __pyx_t_12 = __pyx_t_5(__pyx_t_14); +      __pyx_t_12 = __pyx_t_5(__pyx_t_13);        if (unlikely(!__pyx_t_12)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61048,54 +61794,65 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      }      if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {        PyObject* sequence = __pyx_t_12; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0);  +        __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_13 = PyList_GET_ITEM(sequence, 0);  +        __pyx_t_14 = PyList_GET_ITEM(sequence, 0);           __pyx_t_7 = PyList_GET_ITEM(sequence, 1);           __pyx_t_4 = PyList_GET_ITEM(sequence, 2);         } -      __Pyx_INCREF(__pyx_t_13); +      __Pyx_INCREF(__pyx_t_14);        __Pyx_INCREF(__pyx_t_7);        __Pyx_INCREF(__pyx_t_4); +      #else +      __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_14); +      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_7); +      __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      #endif        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1; -      __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;        __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; -      index = 0; __pyx_t_13 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_13)) goto __pyx_L18_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_13); +      index = 0; __pyx_t_14 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_14)) goto __pyx_L18_unpacking_failed; +      __Pyx_GOTREF(__pyx_t_14);        index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L18_unpacking_failed;        __Pyx_GOTREF(__pyx_t_7);        index = 2; __pyx_t_4 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L18_unpacking_failed;        __Pyx_GOTREF(__pyx_t_4); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        goto __pyx_L19_unpacking_done;        __pyx_L18_unpacking_failed:;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L19_unpacking_done:;      }      __Pyx_XDECREF(__pyx_v_f); -    __pyx_v_f = __pyx_t_13; -    __pyx_t_13 = 0; +    __pyx_v_f = __pyx_t_14; +    __pyx_t_14 = 0;      __Pyx_XDECREF(__pyx_v_lex_i);      __pyx_v_lex_i = __pyx_t_7;      __pyx_t_7 = 0; @@ -61103,9 +61860,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_lex_j = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2034 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2035   *         # at the cost of readability - *         for (f, lex_i, lex_j) in self.get_f_phrases(f_words): + *         for f, lex_i, lex_j in self.get_f_phrases(f_words):   *             self.samples_f[f] += 1             # <<<<<<<<<<<<<<   *    *         # Update phrase counts @@ -61114,46 +61871,35 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->samples_f;      __Pyx_INCREF(__pyx_v_f);      __pyx_t_4 = __pyx_v_f; -    __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_13 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_int_1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14);      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; +    if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2035; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;    } -  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2037 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2038   *    *         # Update phrase counts   *         for rule in rules:             # <<<<<<<<<<<<<<   *             (f_ph, e_ph, al) = rule[:3]   *             self.phrases_f[f_ph] += 1   */ -  if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_rules) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_rules)) { -    __pyx_t_14 = __pyx_cur_scope->__pyx_v_rules; __Pyx_INCREF(__pyx_t_14); __pyx_t_2 = 0; -    __pyx_t_5 = NULL; -  } else { -    __pyx_t_2 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_rules); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_5 = Py_TYPE(__pyx_t_14)->tp_iternext; -  } +  __pyx_t_13 = PyObject_GetIter(((PyObject *)__pyx_cur_scope->__pyx_v_rules)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_t_13); +  __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;    for (;;) { -    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_12 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; -    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_12); __pyx_t_2++; -    } else { -      __pyx_t_12 = __pyx_t_5(__pyx_t_14); +    { +      __pyx_t_12 = __pyx_t_5(__pyx_t_13);        if (unlikely(!__pyx_t_12)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61163,75 +61909,86 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_rule = __pyx_t_12;      __pyx_t_12 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2038 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2039   *         # Update phrase counts   *         for rule in rules:   *             (f_ph, e_ph, al) = rule[:3]             # <<<<<<<<<<<<<<   *             self.phrases_f[f_ph] += 1   *             self.phrases_e[e_ph] += 1   */ -    __pyx_t_12 = __Pyx_PySequence_GetSlice(__pyx_v_rule, 0, 3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_rule, 0, 3, NULL, NULL, &__pyx_k_slice_145, 0, 1, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12);      if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {        PyObject* sequence = __pyx_t_12; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 3)) { +        if (size > 3) __Pyx_RaiseTooManyValuesError(3); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 3)) { -          if (PyTuple_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);  -        __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1);  +        __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1);           __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 3)) { -          if (PyList_GET_SIZE(sequence) > 3) __Pyx_RaiseTooManyValuesError(3); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_4 = PyList_GET_ITEM(sequence, 0);  -        __pyx_t_13 = PyList_GET_ITEM(sequence, 1);  +        __pyx_t_14 = PyList_GET_ITEM(sequence, 1);           __pyx_t_7 = PyList_GET_ITEM(sequence, 2);         }        __Pyx_INCREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_t_13); +      __Pyx_INCREF(__pyx_t_14);        __Pyx_INCREF(__pyx_t_7); +      #else +      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_14); +      __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_7); +      #endif        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1; -      __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;        __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext;        index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L22_unpacking_failed;        __Pyx_GOTREF(__pyx_t_4); -      index = 1; __pyx_t_13 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_13)) goto __pyx_L22_unpacking_failed; -      __Pyx_GOTREF(__pyx_t_13); +      index = 1; __pyx_t_14 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_14)) goto __pyx_L22_unpacking_failed; +      __Pyx_GOTREF(__pyx_t_14);        index = 2; __pyx_t_7 = __pyx_t_8(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L22_unpacking_failed;        __Pyx_GOTREF(__pyx_t_7); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        goto __pyx_L23_unpacking_done;        __pyx_L22_unpacking_failed:;        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L23_unpacking_done:;      }      __Pyx_XDECREF(__pyx_v_f_ph);      __pyx_v_f_ph = __pyx_t_4;      __pyx_t_4 = 0;      __Pyx_XDECREF(__pyx_v_e_ph); -    __pyx_v_e_ph = __pyx_t_13; -    __pyx_t_13 = 0; +    __pyx_v_e_ph = __pyx_t_14; +    __pyx_t_14 = 0;      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_al);      __Pyx_DECREF(__pyx_cur_scope->__pyx_v_al);      __Pyx_GIVEREF(__pyx_t_7);      __pyx_cur_scope->__pyx_v_al = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2039 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2040   *         for rule in rules:   *             (f_ph, e_ph, al) = rule[:3]   *             self.phrases_f[f_ph] += 1             # <<<<<<<<<<<<<< @@ -61242,17 +61999,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->phrases_f;      __Pyx_INCREF(__pyx_v_f_ph);      __pyx_t_7 = __pyx_v_f_ph; -    __pyx_t_13 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14); +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2040 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2041   *             (f_ph, e_ph, al) = rule[:3]   *             self.phrases_f[f_ph] += 1   *             self.phrases_e[e_ph] += 1             # <<<<<<<<<<<<<< @@ -61263,72 +62020,72 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_12 = __pyx_cur_scope->__pyx_v_self->phrases_e;      __Pyx_INCREF(__pyx_v_e_ph);      __pyx_t_7 = __pyx_v_e_ph; -    __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_13 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; +    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2041 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2042   *             self.phrases_f[f_ph] += 1   *             self.phrases_e[e_ph] += 1   *             self.phrases_fe[f_ph][e_ph] += 1             # <<<<<<<<<<<<<<   *             if not self.phrases_al[f_ph][e_ph]:   *                 self.phrases_al[f_ph][e_ph] = al   */ -    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_fe, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12);      __Pyx_INCREF(__pyx_v_e_ph);      __pyx_t_7 = __pyx_v_e_ph; -    __pyx_t_13 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_7); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14); +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +    if (PyObject_SetItem(__pyx_t_12, __pyx_t_7, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2042 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2043   *             self.phrases_e[e_ph] += 1   *             self.phrases_fe[f_ph][e_ph] += 1   *             if not self.phrases_al[f_ph][e_ph]:             # <<<<<<<<<<<<<<   *                 self.phrases_al[f_ph][e_ph] = al   *    */ -    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_12); -    __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_v_e_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetItem(__pyx_t_12, __pyx_v_e_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    __pyx_t_9 = (!__pyx_t_11); +    __pyx_t_9 = ((!__pyx_t_11) != 0);      if (__pyx_t_9) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2043 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2044   *             self.phrases_fe[f_ph][e_ph] += 1   *             if not self.phrases_al[f_ph][e_ph]:   *                 self.phrases_al[f_ph][e_ph] = al             # <<<<<<<<<<<<<<   *    *         # Update Bilexical counts   */ -      __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phrases_al, __pyx_v_f_ph); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      if (PyObject_SetItem(__pyx_t_7, __pyx_v_e_ph, __pyx_cur_scope->__pyx_v_al) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (PyObject_SetItem(__pyx_t_7, __pyx_v_e_ph, __pyx_cur_scope->__pyx_v_al) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L24;      }      __pyx_L24:;    } -  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2046 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2047   *    *         # Update Bilexical counts   *         for e_w in e_words:             # <<<<<<<<<<<<<< @@ -61336,26 +62093,34 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   *         for f_w in f_words:   */    if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_e_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_e_words)) { -    __pyx_t_14 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_14); __pyx_t_2 = 0; +    __pyx_t_13 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_5 = Py_TYPE(__pyx_t_14)->tp_iternext; +    __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;    }    for (;;) { -    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; -    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; +    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif +    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else { -      __pyx_t_7 = __pyx_t_5(__pyx_t_14); +      __pyx_t_7 = __pyx_t_5(__pyx_t_13);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61365,7 +62130,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_e_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2047 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2048   *         # Update Bilexical counts   *         for e_w in e_words:   *             self.bilex_e[e_w] += 1             # <<<<<<<<<<<<<< @@ -61376,19 +62141,19 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_e;      __Pyx_INCREF(__pyx_v_e_w);      __pyx_t_12 = __pyx_v_e_w; -    __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_13 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_14) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    } -  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2048 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2049   *         for e_w in e_words:   *             self.bilex_e[e_w] += 1   *         for f_w in f_words:             # <<<<<<<<<<<<<< @@ -61396,26 +62161,34 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _   *             for e_w in e_words:   */    if (PyList_CheckExact(__pyx_cur_scope->__pyx_v_f_words) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_f_words)) { -    __pyx_t_14 = __pyx_cur_scope->__pyx_v_f_words; __Pyx_INCREF(__pyx_t_14); __pyx_t_2 = 0; +    __pyx_t_13 = __pyx_cur_scope->__pyx_v_f_words; __Pyx_INCREF(__pyx_t_13); __pyx_t_2 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f_words); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_14); -    __pyx_t_5 = Py_TYPE(__pyx_t_14)->tp_iternext; +    __pyx_t_2 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f_words); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_13); +    __pyx_t_5 = Py_TYPE(__pyx_t_13)->tp_iternext;    }    for (;;) { -    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; -    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_14)) { -      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_14)) break; -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; +    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif +    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_13)) { +      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_13)) break; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_13, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else { -      __pyx_t_7 = __pyx_t_5(__pyx_t_14); +      __pyx_t_7 = __pyx_t_5(__pyx_t_13);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -61425,7 +62198,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_v_f_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2049 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2050   *             self.bilex_e[e_w] += 1   *         for f_w in f_words:   *             self.bilex_f[f_w] += 1             # <<<<<<<<<<<<<< @@ -61436,17 +62209,17 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _      __pyx_t_7 = __pyx_cur_scope->__pyx_v_self->bilex_f;      __Pyx_INCREF(__pyx_v_f_w);      __pyx_t_12 = __pyx_v_f_w; -    __pyx_t_13 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_13); -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = PyObject_GetItem(__pyx_t_7, __pyx_t_12); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_14); +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -    if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +    if (PyObject_SetItem(__pyx_t_7, __pyx_t_12, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2050 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2051   *         for f_w in f_words:   *             self.bilex_f[f_w] += 1   *             for e_w in e_words:             # <<<<<<<<<<<<<< @@ -61457,23 +62230,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __pyx_t_7 = __pyx_cur_scope->__pyx_v_e_words; __Pyx_INCREF(__pyx_t_7); __pyx_t_15 = 0;        __pyx_t_16 = NULL;      } else { -      __pyx_t_15 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_15 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_e_words); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __pyx_t_16 = Py_TYPE(__pyx_t_7)->tp_iternext;      }      for (;;) {        if (!__pyx_t_16 && PyList_CheckExact(__pyx_t_7)) {          if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_7)) break; -        __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_16 && PyTuple_CheckExact(__pyx_t_7)) {          if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_7)) break; -        __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_12); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_12 = __pyx_t_16(__pyx_t_7);          if (unlikely(!__pyx_t_12)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -61483,30 +62264,30 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_25add_instance(struct _        __pyx_v_e_w = __pyx_t_12;        __pyx_t_12 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2051 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2052   *             self.bilex_f[f_w] += 1   *             for e_w in e_words:   *                 self.bilex_fe[f_w][e_w] += 1             # <<<<<<<<<<<<<<   *    *     # Create a rule from source, target, non-terminals, and alignments   */ -      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->bilex_fe, __pyx_v_f_w); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->bilex_fe, __pyx_v_f_w); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_INCREF(__pyx_v_e_w);        __pyx_t_4 = __pyx_v_e_w; -      __pyx_t_13 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_13) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_13); -      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_13, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_4); if (!__pyx_t_14) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_14); +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_14, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3); -      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; -      if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +      if (PyObject_SetItem(__pyx_t_12, __pyx_t_4, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;      }      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    } -  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; +  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None);    goto __pyx_L0; @@ -61549,11 +62330,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule(PyObject *_    PyObject *__pyx_v_e_span = 0;    PyObject *__pyx_v_nt = 0;    PyObject *__pyx_v_al = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__e_i,&__pyx_n_s__f_span,&__pyx_n_s__e_span,&__pyx_n_s__nt,&__pyx_n_s__al,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("form_rule (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__e_i,&__pyx_n_s__f_span,&__pyx_n_s__e_span,&__pyx_n_s__nt,&__pyx_n_s__al,0};      PyObject* values[6] = {0,0,0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -61571,42 +62355,36 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule(PyObject *_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_span); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_span)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_span); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e_span)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  4: -        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt); -        if (likely(values[4])) kw_args--; +        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nt)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  5: -        values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__al); -        if (likely(values[5])) kw_args--; +        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__al)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "form_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "form_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {        goto __pyx_L5_argtuple_error; @@ -61627,7 +62405,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule(PyObject *_    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("form_rule", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -61644,12 +62422,14 @@ static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7  static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_x = 0;    PyObject *__pyx_v_y = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda7 (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -61663,18 +62443,16 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyOb        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda7") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda7") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {        goto __pyx_L5_argtuple_error; @@ -61687,7 +62465,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyOb    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("lambda7", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -61698,7 +62476,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7(PyOb    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2057 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2058   *    *         # Substitute in non-terminals   *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))             # <<<<<<<<<<<<<< @@ -61717,11 +62495,11 @@ static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda7", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __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 = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __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); @@ -61729,7 +62507,7 @@ static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self    __Pyx_GIVEREF(__pyx_t_2);    __pyx_t_1 = 0;    __pyx_t_2 = 0; -  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_r = __pyx_t_2; @@ -61756,12 +62534,14 @@ static PyMethodDef __pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8  static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_x = 0;    PyObject *__pyx_v_y = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("lambda8 (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__x,&__pyx_n_s__y,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -61775,18 +62555,16 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyO        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__x)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__y)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda8") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lambda8") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {        goto __pyx_L5_argtuple_error; @@ -61799,7 +62577,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyO    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("lambda8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.form_rule.lambda8", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -61810,7 +62588,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8(PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2081 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2082   *         # Adjusting alignment links takes some doing   *         links = [list(link) for sub in al for link in sub]   *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))             # <<<<<<<<<<<<<< @@ -61829,11 +62607,11 @@ static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("lambda8", 0);    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_y, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __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 = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __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); @@ -61841,7 +62619,7 @@ static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self    __Pyx_GIVEREF(__pyx_t_2);    __pyx_t_1 = 0;    __pyx_t_2 = 0; -  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_builtin_cmp, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_r = __pyx_t_2; @@ -61863,10 +62641,10 @@ static PyObject *__pyx_lambda_funcdef_lambda8(CYTHON_UNUSED PyObject *__pyx_self  }  static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2115 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116   *         f = Phrase(f_sym)   *         e = Phrase(e_sym) - *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<< + *         a = tuple(self.alignment.link(i, j) for i, j in links)             # <<<<<<<<<<<<<<   *         return (f, e, a, lex_f_i, lex_f_j)   *    */ @@ -61879,7 +62657,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(PyO    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_23_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -61889,7 +62667,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(PyO    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);    { -    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_cur_scope);      __Pyx_RefNannyFinishContext();      return (PyObject *) gen; @@ -61913,14 +62691,16 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15    PyObject *__pyx_r = NULL;    PyObject *__pyx_t_1 = NULL;    Py_ssize_t __pyx_t_2; -  PyObject *(*__pyx_t_3)(PyObject *); +  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; -  PyObject *(*__pyx_t_8)(PyObject *); +  PyObject *(*__pyx_t_7)(PyObject *); +  int __pyx_t_8;    int __pyx_t_9; -  int __pyx_t_10; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -61931,97 +62711,91 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15      return NULL;    }    __pyx_L3_first_run:; -  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { __Pyx_RaiseClosureNameError("links"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { -    __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_links; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; -    __pyx_t_3 = NULL; -  } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; +  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links)) { __Pyx_RaiseClosureNameError("links"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links) == Py_None)) { +    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    } +  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_links); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;    for (;;) { -    if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) { -      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; -    } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) { -      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; -    } else { -      __pyx_t_4 = __pyx_t_3(__pyx_t_1); -      if (unlikely(!__pyx_t_4)) { -        if (PyErr_Occurred()) { -          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        break; +    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; +    #if CYTHON_COMPILING_IN_CPYTHON +    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    #else +    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    #endif +    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { +      PyObject* sequence = __pyx_t_3; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 2)) { +        if (size > 2) __Pyx_RaiseTooManyValuesError(2); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        } -      __Pyx_GOTREF(__pyx_t_4); -    } -    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { -      PyObject* sequence = __pyx_t_4; +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);  -        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);  +        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);  +        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        } -        __pyx_t_5 = PyList_GET_ITEM(sequence, 0);  -        __pyx_t_6 = PyList_GET_ITEM(sequence, 1);  +        __pyx_t_4 = PyList_GET_ITEM(sequence, 0);  +        __pyx_t_5 = PyList_GET_ITEM(sequence, 1);         } +      __Pyx_INCREF(__pyx_t_4);        __Pyx_INCREF(__pyx_t_5); -      __Pyx_INCREF(__pyx_t_6); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    } else { -      Py_ssize_t index = -1; -      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_7); -      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; -      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; +      #else +      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed; +      #endif +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    } else +    { +      Py_ssize_t index = -1; +      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; +      index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed; +      __Pyx_GOTREF(__pyx_t_4); +      index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; +      __Pyx_GOTREF(__pyx_t_5); +      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = NULL; +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        goto __pyx_L7_unpacking_done;        __pyx_L6_unpacking_failed:; -      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); -      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; +      __pyx_t_7 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L7_unpacking_done:;      }      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);      __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_i); -    __Pyx_GIVEREF(__pyx_t_5); -    __pyx_cur_scope->__pyx_v_i = __pyx_t_5; -    __pyx_t_5 = 0; +    __Pyx_GIVEREF(__pyx_t_4); +    __pyx_cur_scope->__pyx_v_i = __pyx_t_4; +    __pyx_t_4 = 0;      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_j);      __Pyx_XDECREF(__pyx_cur_scope->__pyx_v_j); -    __Pyx_GIVEREF(__pyx_t_6); -    __pyx_cur_scope->__pyx_v_j = __pyx_t_6; -    __pyx_t_6 = 0; -    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_10 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_j); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_4 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment->__pyx_vtab)->link(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment, __pyx_t_9, __pyx_t_10)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_r = __pyx_t_4; -    __pyx_t_4 = 0; +    __Pyx_GIVEREF(__pyx_t_5); +    __pyx_cur_scope->__pyx_v_j = __pyx_t_5; +    __pyx_t_5 = 0; +    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_cur_scope->__pyx_v_j); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_Alignment *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment->__pyx_vtab)->link(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment, __pyx_t_8, __pyx_t_9)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3); +    __pyx_r = __pyx_t_3; +    __pyx_t_3 = 0;      __Pyx_XGIVEREF(__pyx_t_1);      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;      __pyx_cur_scope->__pyx_t_1 = __pyx_t_2; -    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;      __Pyx_XGIVEREF(__pyx_r);      __Pyx_RefNannyFinishContext();      /* return from generator, yielding value */ @@ -62032,27 +62806,27 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_9form_rule_4generator15      __pyx_cur_scope->__pyx_t_0 = 0;      __Pyx_XGOTREF(__pyx_t_1);      __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; -    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; -    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    PyErr_SetNone(PyExc_StopIteration);    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_7);    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2054 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2055   *    *     # Create a rule from source, target, non-terminals, and alignments   *     def form_rule(self, f_i, e_i, f_span, e_span, nt, al):             # <<<<<<<<<<<<<< @@ -62099,7 +62873,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("form_rule", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(__pyx_ptype_3_sa___pyx_scope_struct_22_form_rule, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -62109,52 +62883,52 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);    __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2057 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2058   *    *         # Substitute in non-terminals   *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))             # <<<<<<<<<<<<<<   *         f_sym = list(f_span[:])   *         off = f_i   */ -  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(__pyx_v_nt);    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nt);    __Pyx_GIVEREF(__pyx_v_nt); -  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_lambda7, 0, __pyx_n_s_146, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_nt_inv = __pyx_t_3;    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2058 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2059   *         # Substitute in non-terminals   *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))   *         f_sym = list(f_span[:])             # <<<<<<<<<<<<<<   *         off = f_i   *         for next_nt in nt:   */ -  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_f_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_f_span, 0, 0, NULL, NULL, &__pyx_k_slice_147, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __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 = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __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(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_f_sym = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2059 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2060   *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3]))   *         f_sym = list(f_span[:])   *         off = f_i             # <<<<<<<<<<<<<< @@ -62164,7 +62938,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_INCREF(__pyx_v_f_i);    __pyx_v_off = __pyx_v_f_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2060 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2061   *         f_sym = list(f_span[:])   *         off = f_i   *         for next_nt in nt:             # <<<<<<<<<<<<<< @@ -62175,23 +62949,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __pyx_t_3 = __pyx_v_nt; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2060; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    }    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_2 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2060; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62201,29 +62983,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __pyx_v_next_nt = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2061 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2062   *         off = f_i   *         for next_nt in nt:   *             nt_len = (next_nt[2] - next_nt[1]) + 1             # <<<<<<<<<<<<<<   *             i = 0   *             while i < nt_len:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __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_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_XDECREF(__pyx_v_nt_len);      __pyx_v_nt_len = __pyx_t_1;      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2062 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2063   *         for next_nt in nt:   *             nt_len = (next_nt[2] - next_nt[1]) + 1   *             i = 0             # <<<<<<<<<<<<<< @@ -62234,7 +63016,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_int_0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2063 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2064   *             nt_len = (next_nt[2] - next_nt[1]) + 1   *             i = 0   *             while i < nt_len:             # <<<<<<<<<<<<<< @@ -62242,84 +63024,83 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 i += 1   */      while (1) { -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (!__pyx_t_7) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2064 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2065   *             i = 0   *             while i < nt_len:   *                 f_sym.pop(next_nt[1] - off)             # <<<<<<<<<<<<<<   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   */ -      __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_f_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_f_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_6, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);        __Pyx_GIVEREF(__pyx_t_2);        __pyx_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __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_t_6)); __pyx_t_6 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2065 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2066   *             while i < nt_len:   *                 f_sym.pop(next_nt[1] - off)   *                 i += 1             # <<<<<<<<<<<<<<   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_i);        __pyx_v_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2066 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2067   *                 f_sym.pop(next_nt[1] - off)   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))             # <<<<<<<<<<<<<<   *             off += (nt_len - 1)   *         e_sym = list(e_span[:])   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __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_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_10 = PyList_Insert(__pyx_v_f_sym, __pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyList_Insert(__pyx_v_f_sym, __pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2067 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2068   *                 i += 1   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)             # <<<<<<<<<<<<<<   *         e_sym = list(e_span[:])   *         off = e_i   */ -    __pyx_t_6 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;      __Pyx_DECREF(__pyx_v_off); @@ -62328,27 +63109,27 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2068 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2069   *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)   *         e_sym = list(e_span[:])             # <<<<<<<<<<<<<<   *         off = e_i   *         for next_nt in nt_inv:   */ -  __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_e_span, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_e_span, 0, 0, NULL, NULL, &__pyx_k_slice_148, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __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 = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __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(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_e_sym = ((PyObject*)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2069 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2070   *             off += (nt_len - 1)   *         e_sym = list(e_span[:])   *         off = e_i             # <<<<<<<<<<<<<< @@ -62359,7 +63140,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_e_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2070 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2071   *         e_sym = list(e_span[:])   *         off = e_i   *         for next_nt in nt_inv:             # <<<<<<<<<<<<<< @@ -62370,23 +63151,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __pyx_t_3 = __pyx_v_nt_inv; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt_inv); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nt_inv); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;    }    for (;;) {      if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && 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++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_2 = __pyx_t_5(__pyx_t_3);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62396,29 +63185,29 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __pyx_v_next_nt = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2071 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2072   *         off = e_i   *         for next_nt in nt_inv:   *             nt_len = (next_nt[4] - next_nt[3]) + 1             # <<<<<<<<<<<<<<   *             i = 0   *             while i < nt_len:   */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __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_6); __pyx_t_6 = 0; -    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_XDECREF(__pyx_v_nt_len);      __pyx_v_nt_len = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2072 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2073   *         for next_nt in nt_inv:   *             nt_len = (next_nt[4] - next_nt[3]) + 1   *             i = 0             # <<<<<<<<<<<<<< @@ -62429,7 +63218,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      __Pyx_XDECREF(__pyx_v_i);      __pyx_v_i = __pyx_int_0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2073 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2074   *             nt_len = (next_nt[4] - next_nt[3]) + 1   *             i = 0   *             while i < nt_len:             # <<<<<<<<<<<<<< @@ -62437,84 +63226,83 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 i += 1   */      while (1) { -      __pyx_t_6 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2073; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyObject_RichCompare(__pyx_v_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        if (!__pyx_t_7) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2074 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2075   *             i = 0   *             while i < nt_len:   *                 e_sym.pop(next_nt[3] - off)             # <<<<<<<<<<<<<<   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   */ -      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_e_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_e_sym), __pyx_n_s__pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __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(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __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_t_2 = 0; -      __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2075 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2076   *             while i < nt_len:   *                 e_sym.pop(next_nt[3] - off)   *                 i += 1             # <<<<<<<<<<<<<<   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_i);        __pyx_v_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2076 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2077   *                 e_sym.pop(next_nt[3] - off)   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))             # <<<<<<<<<<<<<<   *             off += (nt_len - 1)   *    */ -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_next_nt, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_next_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_10 = PyList_Insert(__pyx_v_e_sym, __pyx_t_8, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_10 = PyList_Insert(__pyx_v_e_sym, __pyx_t_8, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2077 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2078   *                 i += 1   *             e_sym.insert(next_nt[3] - off, sym_setindex(self.category, next_nt[0]))   *             off += (nt_len - 1)             # <<<<<<<<<<<<<<   *    *         # Adjusting alignment links takes some doing   */ -    __pyx_t_1 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Subtract(__pyx_v_nt_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2078; __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_off); @@ -62523,36 +63311,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    }    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2080 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2081   *    *         # Adjusting alignment links takes some doing   *         links = [list(link) for sub in al for link in sub]             # <<<<<<<<<<<<<<   *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))   *         links_len = len(links)   */ -  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    if (PyList_CheckExact(__pyx_v_al) || PyTuple_CheckExact(__pyx_v_al)) {      __pyx_t_2 = __pyx_v_al; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;      __pyx_t_5 = NULL;    } else { -    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_al); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_al); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;    }    for (;;) {      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; -      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_1 = __pyx_t_5(__pyx_t_2);        if (unlikely(!__pyx_t_1)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -62565,23 +63361,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py        __pyx_t_1 = __pyx_v_sub; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;        __pyx_t_11 = NULL;      } else { -      __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext;      }      for (;;) {        if (!__pyx_t_11 && PyList_CheckExact(__pyx_t_1)) {          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; -        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_11 && PyTuple_CheckExact(__pyx_t_1)) {          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_6 = __pyx_t_11(__pyx_t_1);          if (unlikely(!__pyx_t_6)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -62590,81 +63394,84 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py        __Pyx_XDECREF(__pyx_v_link);        __pyx_v_link = __pyx_t_6;        __pyx_t_6 = 0; -      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_6);        __Pyx_INCREF(__pyx_v_link);        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_link);        __Pyx_GIVEREF(__pyx_v_link); -      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -      if (unlikely(PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;      }      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    }    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_3));    __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); -  __pyx_cur_scope->__pyx_v_links = ((PyObject *)__pyx_t_3); -  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; +  __pyx_cur_scope->__pyx_v_links = ((PyObject*)__pyx_t_3); +  __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2081 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2082   *         # Adjusting alignment links takes some doing   *         links = [list(link) for sub in al for link in sub]   *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))             # <<<<<<<<<<<<<<   *         links_len = len(links)   *         nt_len = len(nt)   */ -  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_links); -  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_links); -  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_links); -  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_links)); +  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_links)); +  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_links)); +  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8, 0, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_9form_rule_1lambda8, 0, __pyx_n_s_146, NULL, __pyx_n_s___sa, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__cmp), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;    __pyx_v_links_inv = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2082 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2083   *         links = [list(link) for sub in al for link in sub]   *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))   *         links_len = len(links)             # <<<<<<<<<<<<<<   *         nt_len = len(nt)   *         nt_i = 0   */ -  __pyx_t_1 = __pyx_cur_scope->__pyx_v_links; +  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_links);    __Pyx_INCREF(__pyx_t_1); -  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(__pyx_t_1 == Py_None)) { +    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); +    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  } +  __pyx_t_4 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_v_links_len = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2083 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2084   *         links_inv = sorted(links, cmp=lambda x, y: cmp(x[1], y[1]))   *         links_len = len(links)   *         nt_len = len(nt)             # <<<<<<<<<<<<<<   *         nt_i = 0   *         off = f_i   */ -  __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_Length(__pyx_v_nt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_XDECREF(__pyx_v_nt_len);    __pyx_v_nt_len = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2084 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2085   *         links_len = len(links)   *         nt_len = len(nt)   *         nt_i = 0             # <<<<<<<<<<<<<< @@ -62674,7 +63481,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_INCREF(__pyx_int_0);    __pyx_v_nt_i = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2085 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2086   *         nt_len = len(nt)   *         nt_i = 0   *         off = f_i             # <<<<<<<<<<<<<< @@ -62685,7 +63492,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_f_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2086 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2087   *         nt_i = 0   *         off = f_i   *         i = 0             # <<<<<<<<<<<<<< @@ -62696,7 +63503,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_XDECREF(__pyx_v_i);    __pyx_v_i = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2087 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2088   *         off = f_i   *         i = 0   *         while i < links_len:             # <<<<<<<<<<<<<< @@ -62704,13 +63511,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 off += (nt[nt_i][2] - nt[nt_i][1])   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2087; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_7) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2088 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2089   *         i = 0   *         while i < links_len:   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:             # <<<<<<<<<<<<<< @@ -62718,26 +63524,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 nt_i += 1   */      while (1) { -      __pyx_t_1 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;        if (__pyx_t_7) { -        __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_links, __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_links), __pyx_v_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __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_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_1); -        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_3);          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -        __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); +        __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;          __pyx_t_14 = __pyx_t_13;        } else { @@ -62745,82 +63549,82 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py        }        if (!__pyx_t_14) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2089 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2090   *         while i < links_len:   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:   *                 off += (nt[nt_i][2] - nt[nt_i][1])             # <<<<<<<<<<<<<<   *                 nt_i += 1   *             links[i][0] -= off   */ -      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyObject_GetItem(__pyx_v_nt, __pyx_v_nt_i); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __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_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __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_off);        __pyx_v_off = __pyx_t_2;        __pyx_t_2 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2090 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2091   *             while nt_i < nt_len and links[i][0] > nt[nt_i][1]:   *                 off += (nt[nt_i][2] - nt[nt_i][1])   *                 nt_i += 1             # <<<<<<<<<<<<<<   *             links[i][0] -= off   *             i += 1   */ -      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_v_nt_i);        __pyx_v_nt_i = __pyx_t_2;        __pyx_t_2 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2091 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2092   *                 off += (nt[nt_i][2] - nt[nt_i][1])   *                 nt_i += 1   *             links[i][0] -= off             # <<<<<<<<<<<<<<   *             i += 1   *         nt_i = 0   */ -    __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_links, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_links), __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __pyx_t_4 = 0; -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_4, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2091; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_2, __pyx_t_4, __pyx_t_3, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2092 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2093   *                 nt_i += 1   *             links[i][0] -= off   *             i += 1             # <<<<<<<<<<<<<<   *         nt_i = 0   *         off = e_i   */ -    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_2;      __pyx_t_2 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2093 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2094   *             links[i][0] -= off   *             i += 1   *         nt_i = 0             # <<<<<<<<<<<<<< @@ -62831,7 +63635,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_DECREF(__pyx_v_nt_i);    __pyx_v_nt_i = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2094 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2095   *             i += 1   *         nt_i = 0   *         off = e_i             # <<<<<<<<<<<<<< @@ -62842,7 +63646,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_DECREF(__pyx_v_off);    __pyx_v_off = __pyx_v_e_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2095 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2096   *         nt_i = 0   *         off = e_i   *         i = 0             # <<<<<<<<<<<<<< @@ -62853,7 +63657,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_DECREF(__pyx_v_i);    __pyx_v_i = __pyx_int_0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2096 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2097   *         off = e_i   *         i = 0   *         while i < links_len:             # <<<<<<<<<<<<<< @@ -62861,13 +63665,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   */    while (1) { -    __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_links_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      if (!__pyx_t_14) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2097 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2098   *         i = 0   *         while i < links_len:   *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:             # <<<<<<<<<<<<<< @@ -62875,26 +63678,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py   *                 nt_i += 1   */      while (1) { -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_RichCompare(__pyx_v_nt_i, __pyx_v_nt_len, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_14) { -        __pyx_t_2 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __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_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __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_RichCompare(__pyx_t_3, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); +        __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __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_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;          __pyx_t_13 = __pyx_t_7;        } else { @@ -62902,82 +63703,82 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py        }        if (!__pyx_t_13) break; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2098 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2099   *         while i < links_len:   *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])             # <<<<<<<<<<<<<<   *                 nt_i += 1   *             links_inv[i][1] -= off   */ -      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __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_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyObject_GetItem(__pyx_v_nt_inv, __pyx_v_nt_i); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 3, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __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_t_3 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2098; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_off, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __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_off);        __pyx_v_off = __pyx_t_3;        __pyx_t_3 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2099 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2100   *             while nt_i < nt_len and links_inv[i][1] > nt_inv[nt_i][3]:   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   *                 nt_i += 1             # <<<<<<<<<<<<<<   *             links_inv[i][1] -= off   *             i += 1   */ -      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2099; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_nt_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_v_nt_i);        __pyx_v_nt_i = __pyx_t_3;        __pyx_t_3 = 0;      } -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2100 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2101   *                 off += (nt_inv[nt_i][4] - nt_inv[nt_i][3])   *                 nt_i += 1   *             links_inv[i][1] -= off             # <<<<<<<<<<<<<<   *             i += 1   *    */ -    __pyx_t_3 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_v_links_inv, __pyx_v_i); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __pyx_t_4 = 1; -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, __pyx_t_4, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_v_off); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    if (__Pyx_SetItemInt(__pyx_t_3, __pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__Pyx_SetItemInt(__pyx_t_3, __pyx_t_4, __pyx_t_1, sizeof(Py_ssize_t), PyInt_FromSsize_t, 0, 1, 1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2101 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2102   *                 nt_i += 1   *             links_inv[i][1] -= off   *             i += 1             # <<<<<<<<<<<<<<   *    *         # Find lexical span   */ -    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_v_i);      __pyx_v_i = __pyx_t_3;      __pyx_t_3 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2104 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2105   *    *         # Find lexical span   *         lex_f_i = f_i             # <<<<<<<<<<<<<< @@ -62987,76 +63788,75 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    __Pyx_INCREF(__pyx_v_f_i);    __pyx_v_lex_f_i = __pyx_v_f_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2105 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2106   *         # Find lexical span   *         lex_f_i = f_i   *         lex_f_j = f_i + (len(f_span) - 1)             # <<<<<<<<<<<<<<   *         if nt:   *             if nt[0][1] == lex_f_i:   */ -  __pyx_t_4 = PyObject_Length(__pyx_v_f_span); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_4 - 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyObject_Length(__pyx_v_f_span); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyInt_FromSsize_t((__pyx_t_4 - 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_t_1 = PyNumber_Add(__pyx_v_f_i, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2105; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyNumber_Add(__pyx_v_f_i, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    __pyx_v_lex_f_j = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2106 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2107   *         lex_f_i = f_i   *         lex_f_j = f_i + (len(f_span) - 1)   *         if nt:             # <<<<<<<<<<<<<<   *             if nt[0][1] == lex_f_i:   *                 lex_f_i += (nt[0][2] - nt[0][1]) + 1   */ -  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_nt); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_13) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2107 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2108   *         lex_f_j = f_i + (len(f_span) - 1)   *         if nt:   *             if nt[0][1] == lex_f_i:             # <<<<<<<<<<<<<<   *                 lex_f_i += (nt[0][2] - nt[0][1]) + 1   *             if nt[-1][2] == lex_f_j:   */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3);      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_lex_f_i, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_v_lex_f_i, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_13) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2108 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2109   *         if nt:   *             if nt[0][1] == lex_f_i:   *                 lex_f_i += (nt[0][2] - nt[0][1]) + 1             # <<<<<<<<<<<<<<   *             if nt[-1][2] == lex_f_j:   *                 lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1   */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __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_t_2 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_lex_f_i, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_lex_f_i, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __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_lex_f_i); @@ -63066,50 +63866,49 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py      }      __pyx_L24:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2109 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2110   *             if nt[0][1] == lex_f_i:   *                 lex_f_i += (nt[0][2] - nt[0][1]) + 1   *             if nt[-1][2] == lex_f_j:             # <<<<<<<<<<<<<<   *                 lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1   *    */ -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __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(__pyx_t_2, __pyx_v_lex_f_j, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); +    __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_v_lex_f_j, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_13) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2110 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2111   *                 lex_f_i += (nt[0][2] - nt[0][1]) + 1   *             if nt[-1][2] == lex_f_j:   *                 lex_f_j -= (nt[-1][2] - nt[-1][1]) + 1             # <<<<<<<<<<<<<<   *    *         # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)   */ -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_nt, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __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 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_3);        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -      __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_lex_f_j, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_lex_f_j, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2111; __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_lex_f_j); @@ -63122,71 +63921,71 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_27form_rule(struct __py    }    __pyx_L23:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2113 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2114   *    *         # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)   *         f = Phrase(f_sym)             # <<<<<<<<<<<<<<   *         e = Phrase(e_sym) - *         a = tuple(self.alignment.link(i, j) for (i, j) in links) + *         a = tuple(self.alignment.link(i, j) for i, j in links)   */ -  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)__pyx_v_f_sym));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f_sym));    __Pyx_GIVEREF(((PyObject *)__pyx_v_f_sym)); -  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2113; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;    __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2114 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2115   *         # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)   *         f = Phrase(f_sym)   *         e = Phrase(e_sym)             # <<<<<<<<<<<<<< - *         a = tuple(self.alignment.link(i, j) for (i, j) in links) + *         a = tuple(self.alignment.link(i, j) for i, j in links)   *         return (f, e, a, lex_f_i, lex_f_j)   */ -  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(((PyObject *)__pyx_v_e_sym));    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_e_sym));    __Pyx_GIVEREF(((PyObject *)__pyx_v_e_sym)); -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_v_e = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2115 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2116   *         f = Phrase(f_sym)   *         e = Phrase(e_sym) - *         a = tuple(self.alignment.link(i, j) for (i, j) in links)             # <<<<<<<<<<<<<< + *         a = tuple(self.alignment.link(i, j) for i, j in links)             # <<<<<<<<<<<<<<   *         return (f, e, a, lex_f_i, lex_f_j)   *    */ -  __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __pyx_pf_3_sa_23HieroCachingRuleFactory_9form_rule_2genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __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 = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __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_t_1 = 0; -  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    __pyx_v_a = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2116 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2117   *         e = Phrase(e_sym) - *         a = tuple(self.alignment.link(i, j) for (i, j) in links) + *         a = tuple(self.alignment.link(i, j) for i, j in links)   *         return (f, e, a, lex_f_i, lex_f_j)             # <<<<<<<<<<<<<<   *    *     # Rule string from rule   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_INCREF(((PyObject *)__pyx_v_f));    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f)); @@ -63247,11 +64046,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__    PyObject *__pyx_v_f = 0;    PyObject *__pyx_v_e = 0;    PyObject *__pyx_v_a = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__a,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("fmt_rule (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,&__pyx_n_s__a,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -63266,24 +64068,21 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__a)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fmt_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fmt_rule") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -63298,7 +64097,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("fmt_rule", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.fmt_rule", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -63310,7 +64109,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule(PyObject *__  }  static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2120 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121   *     # Rule string from rule   *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<< @@ -63326,7 +64125,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(PyObj    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_25_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -63336,7 +64135,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(PyObj    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);    { -    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_cur_scope);      __Pyx_RefNannyFinishContext();      return (PyObject *) gen; @@ -63365,6 +64164,9 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(    PyObject *__pyx_t_5 = NULL;    PyObject *__pyx_t_6 = NULL;    PyObject *__pyx_t_7 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -63375,29 +64177,37 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(      return NULL;    }    __pyx_L3_first_run:; -  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) { __Pyx_RaiseClosureNameError("a"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) { __Pyx_RaiseClosureNameError("a"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }    if (PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a)) {      __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_a; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;      __pyx_t_3 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_a); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63408,24 +64218,24 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_packed = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_138), __pyx_n_s__format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_149), __pyx_n_s__format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment), __pyx_n_s__unlink); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->alignment), __pyx_n_s__unlink); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __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[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6);      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_packed);      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_packed);      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_packed); -    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; -    __pyx_t_6 = PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_6));      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -    __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; @@ -63446,7 +64256,7 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(      __Pyx_XGOTREF(__pyx_t_1);      __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;      __pyx_t_3 = __pyx_cur_scope->__pyx_t_2; -    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    PyErr_SetNone(PyExc_StopIteration); @@ -63461,11 +64271,12 @@ static PyObject *__pyx_gb_3_sa_23HieroCachingRuleFactory_8fmt_rule_2generator16(    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2119 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2120   *    *     # Rule string from rule   *     def fmt_rule(self, f, e, a):             # <<<<<<<<<<<<<< @@ -63485,7 +64296,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("fmt_rule", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(__pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -63498,30 +64309,30 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_a);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_a); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2120 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2121   *     # Rule string from rule   *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)             # <<<<<<<<<<<<<<   *         return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)   *    */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_8fmt_rule_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __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[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __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(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __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_t_3)); __pyx_t_3 = 0;    __pyx_v_a_str = __pyx_t_2;    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2121 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2122   *     def fmt_rule(self, f, e, a):   *         a_str = ' '.join('{0}-{1}'.format(*self.alignment.unlink(packed)) for packed in a)   *         return '[X] ||| {0} ||| {1} ||| {2}'.format(f, e, a_str)             # <<<<<<<<<<<<<< @@ -63529,9 +64340,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx   *     # Debugging   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_139), __pyx_n_s__format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_150), __pyx_n_s__format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __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 = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3);    __Pyx_INCREF(__pyx_v_f);    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f); @@ -63542,7 +64353,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_29fmt_rule(struct __pyx    __Pyx_INCREF(__pyx_v_a_str);    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_a_str);    __Pyx_GIVEREF(__pyx_v_a_str); -  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; @@ -63577,7 +64388,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats(PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2124 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2125   *    *     # Debugging   *     def dump_online_stats(self):             # <<<<<<<<<<<<<< @@ -63607,75 +64418,75 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("dump_online_stats", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2125 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2126   *     # Debugging   *     def dump_online_stats(self):   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __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_k_tuple_141), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_152), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2126 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2127   *     def dump_online_stats(self):   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')             # <<<<<<<<<<<<<<   *         logger.info('------------------------------')   *         logger.info('f')   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __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_k_tuple_143), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_154), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2127 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2128   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('f')   *         for w in self.bilex_f:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __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_k_tuple_144), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_155), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2128 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2129   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   *         logger.info('f')             # <<<<<<<<<<<<<<   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __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_k_tuple_145), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_156), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2129 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2130   *         logger.info('------------------------------')   *         logger.info('f')   *         for w in self.bilex_f:             # <<<<<<<<<<<<<< @@ -63686,23 +64497,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_2 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63712,44 +64531,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_v_w = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2130 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2131   *         logger.info('f')   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))             # <<<<<<<<<<<<<<   *         logger.info('e')   *         for w in self.bilex_e:   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_2 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_2)); -    __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_kp_s_146)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->bilex_f, __pyx_v_w); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->bilex_f, __pyx_v_w); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);      __Pyx_GIVEREF(__pyx_t_2);      __pyx_t_2 = 0; -    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __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_2); __pyx_t_2 = 0; -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; @@ -63757,24 +64576,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2131 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2132   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')             # <<<<<<<<<<<<<<   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_147), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_158), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2132 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2133   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')   *         for w in self.bilex_e:             # <<<<<<<<<<<<<< @@ -63785,23 +64604,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_8 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63811,44 +64638,44 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_v_w = __pyx_t_8;      __pyx_t_8 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2133 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2134   *         logger.info('e')   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))             # <<<<<<<<<<<<<<   *         logger.info('fe')   *         for w in self.bilex_fe:   */ -    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_2 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __pyx_t_8 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_8)); -    __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_8), ((PyObject *)__pyx_kp_s_146)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_8), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->bilex_e, __pyx_v_w); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_GetItem(__pyx_v_self->bilex_e, __pyx_v_w); if (!__pyx_t_8) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -    __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __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_8); __pyx_t_8 = 0; -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);      __Pyx_GIVEREF(__pyx_t_7);      __pyx_t_7 = 0; -    __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; @@ -63856,24 +64683,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2134 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2135   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')             # <<<<<<<<<<<<<<   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_7 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_7);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_148), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_k_tuple_159), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2135 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2136   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')   *         for w in self.bilex_fe:             # <<<<<<<<<<<<<< @@ -63884,23 +64711,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_t_1 = __pyx_v_self->bilex_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->bilex_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_7 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_7)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -63910,20 +64745,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_v_w = __pyx_t_7;      __pyx_t_7 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2136 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2137   *         logger.info('fe')   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:             # <<<<<<<<<<<<<<   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')   */ -    __pyx_t_7 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_7) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_7);      if (PyList_CheckExact(__pyx_t_7) || PyTuple_CheckExact(__pyx_t_7)) {        __pyx_t_8 = __pyx_t_7; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;        __pyx_t_10 = NULL;      } else { -      __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext;      } @@ -63931,16 +64766,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      for (;;) {        if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_8)) {          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break; -        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_8)) {          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break; -        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_7 = __pyx_t_10(__pyx_t_8);          if (unlikely(!__pyx_t_7)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -63950,57 +64793,57 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str        __pyx_v_w2 = __pyx_t_7;        __pyx_t_7 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2137 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2138   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))             # <<<<<<<<<<<<<<   *         logger.info('F')   *         for ph in self.phrases_f:   */ -      __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); -      __pyx_t_2 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2);        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_7)); -      __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_kp_s_146)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __pyx_t_7 = PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_w2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_f_3_sa_sym_tostring(__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(((PyObject *)__pyx_t_7)); -      __pyx_t_11 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; -      __pyx_t_7 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_146)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_7 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_157)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7);        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      __pyx_t_11 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_GetItem(__pyx_v_self->bilex_fe, __pyx_v_w); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11); -      __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_v_w2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_GetItem(__pyx_t_11, __pyx_v_w2); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __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; -      __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; -      __pyx_t_11 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);        __Pyx_GIVEREF(__pyx_t_11);        __pyx_t_11 = 0; -      __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; @@ -64010,24 +64853,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2138 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2139   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_149), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_160), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2139 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2140   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')   *         for ph in self.phrases_f:             # <<<<<<<<<<<<<< @@ -64038,23 +64881,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_t_1 = __pyx_v_self->phrases_f; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_8 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_8)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -64064,49 +64915,49 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_v_ph = __pyx_t_8;      __pyx_t_8 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2140 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2141   *         logger.info('F')   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))             # <<<<<<<<<<<<<<   *         logger.info('E')   *         for ph in self.phrases_e:   */ -    __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8); -    __pyx_t_11 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s__info); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_INCREF(__pyx_v_ph);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ph);      __Pyx_GIVEREF(__pyx_v_ph); -    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; -    __pyx_t_5 = PyObject_GetItem(__pyx_v_self->phrases_f, __pyx_v_ph); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_GetItem(__pyx_v_self->phrases_f, __pyx_v_ph); if (!__pyx_t_5) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);      __Pyx_GIVEREF(__pyx_t_5);      __pyx_t_5 = 0; -    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 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[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __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_t_2 = 0; -    __pyx_t_2 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyObject_Call(__pyx_t_11, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; @@ -64114,24 +64965,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2141 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2142   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __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_k_tuple_150), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_161), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2142 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2143   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')   *         for ph in self.phrases_e:             # <<<<<<<<<<<<<< @@ -64142,23 +64993,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_t_1 = __pyx_v_self->phrases_e; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;      __pyx_t_4 = NULL;    } else { -    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_2 = __pyx_t_4(__pyx_t_1);        if (unlikely(!__pyx_t_2)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -64168,49 +65027,49 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str      __pyx_v_ph = __pyx_t_2;      __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2143 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2144   *         logger.info('E')   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))             # <<<<<<<<<<<<<<   *         logger.info('FE')   *         self.dump_online_rules()   */ -    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s__info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __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 = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_ph);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ph);      __Pyx_GIVEREF(__pyx_v_ph); -    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_t_2 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_t_11, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -    __pyx_t_11 = PyObject_GetItem(__pyx_v_self->phrases_e, __pyx_v_ph); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_GetItem(__pyx_v_self->phrases_e, __pyx_v_ph); if (!__pyx_t_11) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11); -    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);      __Pyx_GIVEREF(__pyx_t_11);      __pyx_t_11 = 0; -    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; -    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; -    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_11);      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);      __Pyx_GIVEREF(__pyx_t_8);      __pyx_t_8 = 0; -    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_11), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_8);      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;      __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0; @@ -64218,33 +65077,33 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_31dump_online_stats(str    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2144 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2145   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')             # <<<<<<<<<<<<<<   *         self.dump_online_rules()   *    */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_8);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_151), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_162), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2145 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2146   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')   *         self.dump_online_rules()             # <<<<<<<<<<<<<<   *    *     def dump_online_rules(self):   */ -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__dump_online_rules); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__dump_online_rules); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __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[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2146; __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; @@ -64280,7 +65139,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules(PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2147 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2148   *         self.dump_online_rules()   *    *     def dump_online_rules(self):             # <<<<<<<<<<<<<< @@ -64310,7 +65169,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("dump_online_rules", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2148 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2149   *    *     def dump_online_rules(self):   *         for ph in self.phrases_fe:             # <<<<<<<<<<<<<< @@ -64321,23 +65180,31 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str      __pyx_t_1 = __pyx_v_self->phrases_fe; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;      __pyx_t_3 = NULL;    } else { -    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->phrases_fe); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;    }    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) {          if (PyErr_Occurred()) {            if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +          else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          }          break;        } @@ -64347,20 +65214,20 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str      __pyx_v_ph = __pyx_t_4;      __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2149 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2150   *     def dump_online_rules(self):   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:             # <<<<<<<<<<<<<<   *                 logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))   *    */ -    __pyx_t_4 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __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_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;        __pyx_t_7 = NULL;      } else { -      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5);        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;      } @@ -64368,16 +65235,24 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str      for (;;) {        if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; -        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; -        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; +        #if CYTHON_COMPILING_IN_CPYTHON +        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #else +        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        #endif        } else {          __pyx_t_4 = __pyx_t_7(__pyx_t_5);          if (unlikely(!__pyx_t_4)) {            if (PyErr_Occurred()) {              if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); -            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +            else {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}            }            break;          } @@ -64387,42 +65262,42 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str        __pyx_v_ph2 = __pyx_t_4;        __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2150 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2151   *         for ph in self.phrases_fe:   *             for ph2 in self.phrases_fe[ph]:   *                 logger.info(self.fmt_rule(str(ph), str(ph2), self.phrases_al[ph][ph2]) + ' ||| ' + str(self.phrases_fe[ph][ph2]))             # <<<<<<<<<<<<<<   *    *     # Lookup online stats for phrase pair (f, e).  Return None if no match.   */ -      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__logger); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s__info); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_8);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s__fmt_rule); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_ph);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ph);        __Pyx_GIVEREF(__pyx_v_ph); -      __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_10);        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_INCREF(__pyx_v_ph2);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ph2);        __Pyx_GIVEREF(__pyx_v_ph2); -      __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_11 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_11);        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __pyx_t_9 = PyObject_GetItem(__pyx_v_self->phrases_al, __pyx_v_ph); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyObject_GetItem(__pyx_v_self->phrases_al, __pyx_v_ph); if (!__pyx_t_9) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9); -      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_v_ph2); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_GetItem(__pyx_t_9, __pyx_v_ph2); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; -      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10);        __Pyx_GIVEREF(__pyx_t_10); @@ -64433,36 +65308,36 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_33dump_online_rules(str        __pyx_t_10 = 0;        __pyx_t_11 = 0;        __pyx_t_12 = 0; -      __pyx_t_12 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; -      __pyx_t_9 = PyNumber_Add(__pyx_t_12, ((PyObject *)__pyx_kp_s_18)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_9 = PyNumber_Add(__pyx_t_12, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_9);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -      __pyx_t_12 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_GetItem(__pyx_v_self->phrases_fe, __pyx_v_ph); if (!__pyx_t_12) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12); -      __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_v_ph2); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyObject_GetItem(__pyx_t_12, __pyx_v_ph2); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; -      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);        __Pyx_GIVEREF(__pyx_t_4);        __pyx_t_4 = 0; -      __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4);        __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0; -      __pyx_t_12 = PyNumber_Add(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyNumber_Add(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 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[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4);        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12);        __Pyx_GIVEREF(__pyx_t_12);        __pyx_t_12 = 0; -      __pyx_t_12 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_12 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_12);        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; @@ -64498,11 +65373,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyO  static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    PyObject *__pyx_v_f = 0;    PyObject *__pyx_v_e = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("online_ctx_lookup (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__e,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -64516,18 +65394,16 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyO        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__e)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "online_ctx_lookup") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "online_ctx_lookup") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {        goto __pyx_L5_argtuple_error; @@ -64540,7 +65416,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyO    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("online_ctx_lookup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.online_ctx_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -64551,7 +65427,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup(PyO    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2154 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2155   *     # Lookup online stats for phrase pair (f, e).  Return None if no match.   *     # IMPORTANT: use get() to avoid adding items to defaultdict   *     def online_ctx_lookup(self, f, e):             # <<<<<<<<<<<<<< @@ -64566,130 +65442,131 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(str    PyObject *__pyx_v_paircount = NULL;    PyObject *__pyx_r = NULL;    __Pyx_RefNannyDeclarations -  PyObject *__pyx_t_1 = NULL; +  int __pyx_t_1;    PyObject *__pyx_t_2 = NULL;    PyObject *__pyx_t_3 = NULL; -  int __pyx_t_4; +  PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("online_ctx_lookup", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2155 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2156   *     # IMPORTANT: use get() to avoid adding items to defaultdict   *     def online_ctx_lookup(self, f, e):   *         if self.online:             # <<<<<<<<<<<<<<   *             fcount = self.phrases_f.get(f, 0)   *             fsample_count = self.samples_f.get(f, 0)   */ -  if (__pyx_v_self->online) { +  __pyx_t_1 = (__pyx_v_self->online != 0); +  if (__pyx_t_1) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2156 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2157   *     def online_ctx_lookup(self, f, e):   *         if self.online:   *             fcount = self.phrases_f.get(f, 0)             # <<<<<<<<<<<<<<   *             fsample_count = self.samples_f.get(f, 0)   *             d = self.phrases_fe.get(f, None)   */ -    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->phrases_f, __pyx_n_s__get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __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 = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->phrases_f, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __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 = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_f); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);      __Pyx_GIVEREF(__pyx_v_f);      __Pyx_INCREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0); +    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);      __Pyx_GIVEREF(__pyx_int_0); -    __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2156; __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_v_fcount = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __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_v_fcount = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2157 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2158   *         if self.online:   *             fcount = self.phrases_f.get(f, 0)   *             fsample_count = self.samples_f.get(f, 0)             # <<<<<<<<<<<<<<   *             d = self.phrases_fe.get(f, None)   *             paircount = d.get(e, 0) if d else 0   */ -    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self->samples_f, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->samples_f, __pyx_n_s__get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __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[8]; __pyx_lineno = 2157; __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); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);      __Pyx_GIVEREF(__pyx_v_f);      __Pyx_INCREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0); +    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);      __Pyx_GIVEREF(__pyx_int_0); -    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -    __pyx_v_fsample_count = __pyx_t_1; -    __pyx_t_1 = 0; +    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __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_v_fsample_count = __pyx_t_2; +    __pyx_t_2 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2158 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2159   *             fcount = self.phrases_f.get(f, 0)   *             fsample_count = self.samples_f.get(f, 0)   *             d = self.phrases_fe.get(f, None)             # <<<<<<<<<<<<<<   *             paircount = d.get(e, 0) if d else 0   *             return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)   */ -    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __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 = 2158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->phrases_fe, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __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 = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_3);      __Pyx_INCREF(__pyx_v_f); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f); +    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);      __Pyx_GIVEREF(__pyx_v_f);      __Pyx_INCREF(Py_None); -    PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None); +    PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None);      __Pyx_GIVEREF(Py_None); -    __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2158; __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_v_d = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __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_v_d = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2159 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2160   *             fsample_count = self.samples_f.get(f, 0)   *             d = self.phrases_fe.get(f, None)   *             paircount = d.get(e, 0) if d else 0             # <<<<<<<<<<<<<<   *             return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)   *         return None   */ -    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_d); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    if (__pyx_t_4) { -      __pyx_t_2 = PyObject_GetAttr(__pyx_v_d, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_d); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (__pyx_t_1) { +      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_d, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __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[8]; __pyx_lineno = 2160; __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 = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1);        __Pyx_INCREF(__pyx_v_e); -      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_e); +      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_e);        __Pyx_GIVEREF(__pyx_v_e);        __Pyx_INCREF(__pyx_int_0); -      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0); +      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);        __Pyx_GIVEREF(__pyx_int_0); -      __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_5); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -      __pyx_t_3 = __pyx_t_5; +      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __pyx_t_4 = __pyx_t_5;        __pyx_t_5 = 0;      } else {        __Pyx_INCREF(__pyx_int_0); -      __pyx_t_3 = __pyx_int_0; +      __pyx_t_4 = __pyx_int_0;      } -    __pyx_v_paircount = __pyx_t_3; -    __pyx_t_3 = 0; +    __pyx_v_paircount = __pyx_t_4; +    __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2160 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2161   *             d = self.phrases_fe.get(f, None)   *             paircount = d.get(e, 0) if d else 0   *             return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)             # <<<<<<<<<<<<<< @@ -64697,9 +65574,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(str   *    */      __Pyx_XDECREF(__pyx_r); -    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s_152); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_163); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_5);      __Pyx_INCREF(__pyx_v_fcount);      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fcount); @@ -64719,18 +65596,18 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(str      __Pyx_INCREF(__pyx_v_self->bilex_fe);      PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_self->bilex_fe);      __Pyx_GIVEREF(__pyx_v_self->bilex_fe); -    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; +    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2161; __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_5)); __pyx_t_5 = 0; -    __pyx_r = __pyx_t_1; -    __pyx_t_1 = 0; +    __pyx_r = __pyx_t_2; +    __pyx_t_2 = 0;      goto __pyx_L0;      goto __pyx_L3;    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2161 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2162   *             paircount = d.get(e, 0) if d else 0   *             return OnlineFeatureContext(fcount, fsample_count, paircount, self.bilex_f, self.bilex_e, self.bilex_fe)   *         return None             # <<<<<<<<<<<<<< @@ -64745,9 +65622,9 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_35online_ctx_lookup(str    __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("_sa.HieroCachingRuleFactory.online_ctx_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL; @@ -64783,12 +65660,14 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extrac    PyObject *__pyx_v_wc = 0;    PyObject *__pyx_v_ntc = 0;    PyObject *__pyx_v_syms = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__lex_i,&__pyx_n_s__lex_j,&__pyx_n_s__wc,&__pyx_n_s__ntc,&__pyx_n_s__syms,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("extract (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f_i,&__pyx_n_s__f_j,&__pyx_n_s__lex_i,&__pyx_n_s__lex_j,&__pyx_n_s__wc,&__pyx_n_s__ntc,&__pyx_n_s__syms,0};      PyObject* values[7] = {0,0,0,0,0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -64807,48 +65686,41 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extrac        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_i)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f_j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_i); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  3: -        values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_j); -        if (likely(values[3])) kw_args--; +        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lex_j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 3); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  4: -        values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc); -        if (likely(values[4])) kw_args--; +        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__wc)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 4); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  5: -        values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ntc); -        if (likely(values[5])) kw_args--; +        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ntc)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 5); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  6: -        values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__syms); -        if (likely(values[6])) kw_args--; +        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__syms)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, 6); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "extract") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {        goto __pyx_L5_argtuple_error; @@ -64871,7 +65743,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extrac    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("extract", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_f_phrases.extract", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -64882,7 +65754,7 @@ static PyObject *__pyx_pw_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extrac    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2171 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172   *         phrases = set() # (fphrase, lex_i, lex_j)   *    *         def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):             # <<<<<<<<<<<<<< @@ -64907,6 +65779,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract    PyObject *__pyx_t_7 = NULL;    int __pyx_t_8;    int __pyx_t_9; +  int __pyx_t_10;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0; @@ -64914,35 +65787,33 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract    __pyx_outer_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *) __Pyx_CyFunction_GetClosure(__pyx_self);    __pyx_cur_scope = __pyx_outer_scope; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2173 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2174   *         def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:             # <<<<<<<<<<<<<<   *                 return   *             # Extend with word   */ -  if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -  __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (unlikely(!__pyx_cur_scope->__pyx_v_f_len)) { __Pyx_RaiseClosureNameError("f_len"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +  __pyx_t_1 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_f_len, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_2); +  __pyx_t_2 = PyObject_RichCompare(__pyx_v_f_j, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __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[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    if (!__pyx_t_3) { -    __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Subtract(__pyx_v_f_j, __pyx_v_f_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_initial_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __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; -    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __pyx_t_6 = __pyx_t_5;    } else { @@ -64950,7 +65821,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract    }    if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2174 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2175   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   *                 return             # <<<<<<<<<<<<<< @@ -64964,59 +65835,58 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract    }    __pyx_L3:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2176 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2177   *                 return   *             # Extend with word   *             if wc + ntc < self.max_length:             # <<<<<<<<<<<<<<   *                 syms.append(f_words[f_j])   *                 f = Phrase(syms)   */ -  __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); -  __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); +  __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2176; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_6) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2177 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2178   *             # Extend with word   *             if wc + ntc < self.max_length:   *                 syms.append(f_words[f_j])             # <<<<<<<<<<<<<<   *                 f = Phrase(syms)   *                 new_lex_i = min(lex_i, f_j)   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_f_words, __pyx_v_f_j); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(!__pyx_cur_scope->__pyx_v_f_words)) { __Pyx_RaiseClosureNameError("f_words"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_1 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_f_words, __pyx_v_f_j); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2178 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2179   *             if wc + ntc < self.max_length:   *                 syms.append(f_words[f_j])   *                 f = Phrase(syms)             # <<<<<<<<<<<<<<   *                 new_lex_i = min(lex_i, f_j)   *                 new_lex_j = max(lex_j, f_j)   */ -    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2);      __Pyx_INCREF(__pyx_v_syms);      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_syms);      __Pyx_GIVEREF(__pyx_v_syms); -    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;      __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_1);      __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2179 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2180   *                 syms.append(f_words[f_j])   *                 f = Phrase(syms)   *                 new_lex_i = min(lex_i, f_j)             # <<<<<<<<<<<<<< @@ -65027,9 +65897,8 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract      __pyx_t_1 = __pyx_v_f_j;      __Pyx_INCREF(__pyx_v_lex_i);      __pyx_t_2 = __pyx_v_lex_i; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_6) {        __Pyx_INCREF(__pyx_t_1); @@ -65040,11 +65909,13 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract      }      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __Pyx_INCREF(__pyx_t_4); -    __pyx_v_new_lex_i = __pyx_t_4; +    __pyx_t_1 = __pyx_t_4; +    __Pyx_INCREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_v_new_lex_i = __pyx_t_1; +    __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2180 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2181   *                 f = Phrase(syms)   *                 new_lex_i = min(lex_i, f_j)   *                 new_lex_j = max(lex_j, f_j)             # <<<<<<<<<<<<<< @@ -65052,285 +65923,234 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract   *                 extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)   */      __Pyx_INCREF(__pyx_v_f_j); -    __pyx_t_4 = __pyx_v_f_j; +    __pyx_t_1 = __pyx_v_f_j;      __Pyx_INCREF(__pyx_v_lex_j); -    __pyx_t_1 = __pyx_v_lex_j; -    __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_7); -    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __pyx_v_lex_j; +    __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;      if (__pyx_t_6) { -      __Pyx_INCREF(__pyx_t_4); -      __pyx_t_2 = __pyx_t_4; -    } else {        __Pyx_INCREF(__pyx_t_1);        __pyx_t_2 = __pyx_t_1; +    } else { +      __Pyx_INCREF(__pyx_t_4); +      __pyx_t_2 = __pyx_t_4;      } -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    __Pyx_INCREF(__pyx_t_2); -    __pyx_v_new_lex_j = __pyx_t_2; +    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_1 = __pyx_t_2; +    __Pyx_INCREF(__pyx_t_1);      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_v_new_lex_j = __pyx_t_1; +    __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2181 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2182   *                 new_lex_i = min(lex_i, f_j)   *                 new_lex_j = max(lex_j, f_j)   *                 phrases.add((f, new_lex_i, new_lex_j))             # <<<<<<<<<<<<<<   *                 extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)   *                 syms.pop()   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_2 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_phrases, __pyx_n_s__add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_2); -    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); +    if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_phrases) == Py_None)) { +      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add"); +      {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    } +    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_1);      __Pyx_INCREF(((PyObject *)__pyx_v_f)); -    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_f)); +    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_f));      __Pyx_GIVEREF(((PyObject *)__pyx_v_f));      __Pyx_INCREF(__pyx_v_new_lex_i); -    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_new_lex_i); +    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_new_lex_i);      __Pyx_GIVEREF(__pyx_v_new_lex_i);      __Pyx_INCREF(__pyx_v_new_lex_j); -    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_new_lex_j); +    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_new_lex_j);      __Pyx_GIVEREF(__pyx_v_new_lex_j); -    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4)); -    __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); -    __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2181; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +    __pyx_t_8 = PySet_Add(__pyx_cur_scope->__pyx_v_phrases, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2182 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2183   *                 new_lex_j = max(lex_j, f_j)   *                 phrases.add((f, new_lex_i, new_lex_j))   *                 extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)             # <<<<<<<<<<<<<<   *                 syms.pop()   *             # Extend with existing non-terminal   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_1 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); -    __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); -    __Pyx_INCREF(__pyx_v_new_lex_i); -    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_new_lex_i); -    __Pyx_GIVEREF(__pyx_v_new_lex_i); -    __Pyx_INCREF(__pyx_v_new_lex_j); -    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_new_lex_j); -    __Pyx_GIVEREF(__pyx_v_new_lex_j); -    PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    __Pyx_INCREF(__pyx_v_ntc); -    PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_ntc); -    __Pyx_GIVEREF(__pyx_v_ntc); -    __Pyx_INCREF(__pyx_v_syms); -    PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_syms); -    __Pyx_GIVEREF(__pyx_v_syms); -    __pyx_t_4 = 0; -    __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_4 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_1, __pyx_v_new_lex_i, __pyx_v_new_lex_j, __pyx_t_2, __pyx_v_ntc, __pyx_v_syms); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __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_t_4); __pyx_t_4 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2183 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2184   *                 phrases.add((f, new_lex_i, new_lex_j))   *                 extract(f_i, f_j + 1, new_lex_i, new_lex_j, wc + 1, ntc, syms)   *                 syms.pop()             # <<<<<<<<<<<<<<   *             # Extend with existing non-terminal   *             if syms and sym_isvar(syms[-1]):   */ -    __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +    __pyx_t_4 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      goto __pyx_L4;    }    __pyx_L4:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2185 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2186   *                 syms.pop()   *             # Extend with existing non-terminal   *             if syms and sym_isvar(syms[-1]):             # <<<<<<<<<<<<<<   *                 # Don't re-extract the same phrase   *                 extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)   */ -  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__pyx_t_6) { -    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    __pyx_t_3 = __pyx_f_3_sa_sym_isvar(__pyx_t_8); +    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +    __pyx_t_3 = (__pyx_f_3_sa_sym_isvar(__pyx_t_9) != 0);    } else {      __pyx_t_3 = __pyx_t_6;    }    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2187 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2188   *             if syms and sym_isvar(syms[-1]):   *                 # Don't re-extract the same phrase   *                 extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)             # <<<<<<<<<<<<<<   *             # Extend with new non-terminal   *             if wc + ntc < self.max_length:   */ -    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -    __pyx_t_1 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __Pyx_GOTREF(__pyx_t_4); +    if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +    __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_lex_i, __pyx_v_lex_j, __pyx_v_wc, __pyx_v_ntc, __pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_2); -    __Pyx_INCREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); -    __Pyx_GIVEREF(__pyx_v_f_i); -    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    __Pyx_INCREF(__pyx_v_lex_i); -    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_lex_i); -    __Pyx_GIVEREF(__pyx_v_lex_i); -    __Pyx_INCREF(__pyx_v_lex_j); -    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_lex_j); -    __Pyx_GIVEREF(__pyx_v_lex_j); -    __Pyx_INCREF(__pyx_v_wc); -    PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_wc); -    __Pyx_GIVEREF(__pyx_v_wc); -    __Pyx_INCREF(__pyx_v_ntc); -    PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_ntc); -    __Pyx_GIVEREF(__pyx_v_ntc); -    __Pyx_INCREF(__pyx_v_syms); -    PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_syms); -    __Pyx_GIVEREF(__pyx_v_syms); -    __pyx_t_1 = 0; -    __pyx_t_1 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_1); -    __Pyx_DECREF(((PyObject *)__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; +    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;      goto __pyx_L5;    }    __pyx_L5:; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2189 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2190   *                 extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc, syms)   *             # Extend with new non-terminal   *             if wc + ntc < self.max_length:             # <<<<<<<<<<<<<<   *                 if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):   *                     syms.append(sym_setindex(self.category, ntc + 1))   */ -  __pyx_t_1 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyNumber_Add(__pyx_v_wc, __pyx_v_ntc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_4 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_length); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_4); -  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    if (__pyx_t_3) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2190 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2191   *             # Extend with new non-terminal   *             if wc + ntc < self.max_length:   *                 if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):             # <<<<<<<<<<<<<<   *                     syms.append(sym_setindex(self.category, ntc + 1))   *                     f = Phrase(syms)   */ -    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_syms); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __pyx_t_6 = (!__pyx_t_3);      if (!__pyx_t_6) { -      __pyx_t_4 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_ntc, __pyx_t_4, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); +      __pyx_t_1 = PyInt_FromLong(__pyx_cur_scope->__pyx_v_self->max_nonterminals); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1); +      __pyx_t_4 = PyObject_RichCompare(__pyx_v_ntc, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        if (__pyx_t_3) { -        __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -        __pyx_t_5 = (!__pyx_f_3_sa_sym_isvar(__pyx_t_8)); -        __pyx_t_9 = __pyx_t_5; +        __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_syms, -1, sizeof(long), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_4) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_GOTREF(__pyx_t_4); +        __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __pyx_t_5 = (!(__pyx_f_3_sa_sym_isvar(__pyx_t_9) != 0)); +        __pyx_t_10 = __pyx_t_5;        } else { -        __pyx_t_9 = __pyx_t_3; +        __pyx_t_10 = __pyx_t_3;        } -      __pyx_t_3 = __pyx_t_9; +      __pyx_t_3 = __pyx_t_10;      } else {        __pyx_t_3 = __pyx_t_6;      }      if (__pyx_t_3) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2191 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2192   *             if wc + ntc < self.max_length:   *                 if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):   *                     syms.append(sym_setindex(self.category, ntc + 1))             # <<<<<<<<<<<<<<   *                     f = Phrase(syms)   *                     if wc > 0:   */ -      __pyx_t_2 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -      __pyx_t_2 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __pyx_t_4 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +      __pyx_t_4 = PyInt_FromLong(__pyx_f_3_sa_sym_setindex(__pyx_cur_scope->__pyx_v_self->category, __pyx_t_9)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_syms, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __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_1); __pyx_t_1 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2192 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2193   *                 if not syms or (ntc < self.max_nonterminals and not sym_isvar(syms[-1])):   *                     syms.append(sym_setindex(self.category, ntc + 1))   *                     f = Phrase(syms)             # <<<<<<<<<<<<<<   *                     if wc > 0:   *                         phrases.add((f, lex_i, lex_j))   */ -      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __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[8]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_1);        __Pyx_INCREF(__pyx_v_syms); -      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_syms); +      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_syms);        __Pyx_GIVEREF(__pyx_v_syms); -      __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_2); -      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; +      __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3_sa_Phrase)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_4); +      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;        __Pyx_XDECREF(((PyObject *)__pyx_v_f)); -      __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_2); -      __pyx_t_2 = 0; +      __pyx_v_f = ((struct __pyx_obj_3_sa_Phrase *)__pyx_t_4); +      __pyx_t_4 = 0; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2193 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2194   *                     syms.append(sym_setindex(self.category, ntc + 1))   *                     f = Phrase(syms)   *                     if wc > 0:             # <<<<<<<<<<<<<<   *                         phrases.add((f, lex_i, lex_j))   *                     extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)   */ -      __pyx_t_2 = PyObject_RichCompare(__pyx_v_wc, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2193; __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[8]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; +      __pyx_t_4 = PyObject_RichCompare(__pyx_v_wc, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;        if (__pyx_t_3) { -        /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2194 +        /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2195   *                     f = Phrase(syms)   *                     if wc > 0:   *                         phrases.add((f, lex_i, lex_j))             # <<<<<<<<<<<<<<   *                     extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)   *                     syms.pop()   */ -        if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -        __pyx_t_2 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_phrases, __pyx_n_s__add); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_2); -        __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        if (unlikely(!__pyx_cur_scope->__pyx_v_phrases)) { __Pyx_RaiseClosureNameError("phrases"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +        if (unlikely(((PyObject *)__pyx_cur_scope->__pyx_v_phrases) == Py_None)) { +          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "add"); +          {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        } +        __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}          __Pyx_GOTREF(__pyx_t_4);          __Pyx_INCREF(((PyObject *)__pyx_v_f));          PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_f)); @@ -65341,70 +66161,40 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract          __Pyx_INCREF(__pyx_v_lex_j);          PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_lex_j);          __Pyx_GIVEREF(__pyx_v_lex_j); -        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        __Pyx_GOTREF(__pyx_t_1); -        PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4)); -        __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); -        __pyx_t_4 = 0; -        __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2194; __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_1)); __pyx_t_1 = 0; -        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; +        __pyx_t_8 = PySet_Add(__pyx_cur_scope->__pyx_v_phrases, ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +        __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;          goto __pyx_L8;        }        __pyx_L8:; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2195 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2196   *                     if wc > 0:   *                         phrases.add((f, lex_i, lex_j))   *                     extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)             # <<<<<<<<<<<<<<   *                     syms.pop()   *    */ -      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } -      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_4 = PyNumber_Add(__pyx_v_f_j, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_4); -      __pyx_t_1 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = PyNumber_Add(__pyx_v_ntc, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1); -      __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      if (unlikely(!__pyx_cur_scope->__pyx_v_extract)) { __Pyx_RaiseClosureNameError("extract"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } +      __pyx_t_2 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_v_f_i, __pyx_t_4, __pyx_v_lex_i, __pyx_v_lex_j, __pyx_v_wc, __pyx_t_1, __pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_2); -      __Pyx_INCREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f_i); -      __Pyx_GIVEREF(__pyx_v_f_i); -      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); -      __Pyx_GIVEREF(__pyx_t_4); -      __Pyx_INCREF(__pyx_v_lex_i); -      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_lex_i); -      __Pyx_GIVEREF(__pyx_v_lex_i); -      __Pyx_INCREF(__pyx_v_lex_j); -      PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_lex_j); -      __Pyx_GIVEREF(__pyx_v_lex_j); -      __Pyx_INCREF(__pyx_v_wc); -      PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_wc); -      __Pyx_GIVEREF(__pyx_v_wc); -      PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_t_1); -      __Pyx_GIVEREF(__pyx_t_1); -      __Pyx_INCREF(__pyx_v_syms); -      PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_syms); -      __Pyx_GIVEREF(__pyx_v_syms); -      __pyx_t_4 = 0; -      __pyx_t_1 = 0; -      __pyx_t_1 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; +      __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; -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2196 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2197   *                         phrases.add((f, lex_i, lex_j))   *                     extract(f_i, f_j + 1, lex_i, lex_j, wc, ntc + 1, syms)   *                     syms.pop()             # <<<<<<<<<<<<<<   *    *         # Try to extract phrases from every f index   */ -      __pyx_t_1 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -      __Pyx_GOTREF(__pyx_t_1); -      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; +      __pyx_t_2 = __Pyx_PyObject_Pop(__pyx_v_syms); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_2); +      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;        goto __pyx_L7;      }      __pyx_L7:; @@ -65430,7 +66220,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2166 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2167   *     # (Used for EGivenFCoherent)   *     # Return set of (fphrase, lex_i, lex_j)   *     def get_f_phrases(self, f_words):             # <<<<<<<<<<<<<< @@ -65449,11 +66239,12 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct    PyObject *__pyx_t_4 = NULL;    PyObject *__pyx_t_5 = NULL;    PyObject *__pyx_t_6 = NULL; +  PyObject *__pyx_t_7 = NULL;    int __pyx_lineno = 0;    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("get_f_phrases", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(__pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -65466,7 +66257,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_words);    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_words); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2168 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2169   *     def get_f_phrases(self, f_words):   *    *         f_len = len(f_words)             # <<<<<<<<<<<<<< @@ -65475,93 +66266,75 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct   */    __pyx_t_1 = __pyx_cur_scope->__pyx_v_f_words;    __Pyx_INCREF(__pyx_t_1); -  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_cur_scope->__pyx_v_f_len = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2169 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2170   *    *         f_len = len(f_words)   *         phrases = set() # (fphrase, lex_i, lex_j)             # <<<<<<<<<<<<<<   *    *         def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):   */ -  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_1));    __Pyx_GIVEREF(((PyObject *)__pyx_t_1)); -  __pyx_cur_scope->__pyx_v_phrases = ((PyObject *)__pyx_t_1); +  __pyx_cur_scope->__pyx_v_phrases = ((PyObject*)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2171 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172   *         phrases = set() # (fphrase, lex_i, lex_j)   *    *         def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):             # <<<<<<<<<<<<<<   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   */ -  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract, 0, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_154)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_3_sa_23HieroCachingRuleFactory_13get_f_phrases_1extract, 0, __pyx_n_s_166, ((PyObject*)__pyx_cur_scope), __pyx_n_s___sa, ((PyObject *)__pyx_k_codeobj_165)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_GIVEREF(__pyx_t_1);    __pyx_cur_scope->__pyx_v_extract = __pyx_t_1;    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2199 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2200   *    *         # Try to extract phrases from every f index   *         for f_i from 0 <= f_i < f_len:             # <<<<<<<<<<<<<<   *             extract(f_i, f_i, f_len, -1, 0, 0, [])   *    */ -  __pyx_t_3 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2199; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_PyInt_AsLong(__pyx_cur_scope->__pyx_v_f_len); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    for (__pyx_v_f_i = 0; __pyx_v_f_i < __pyx_t_3; __pyx_v_f_i++) { -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2200 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2201   *         # Try to extract phrases from every f index   *         for f_i from 0 <= f_i < f_len:   *             extract(f_i, f_i, f_len, -1, 0, 0, [])             # <<<<<<<<<<<<<<   *    *         return phrases   */ -    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1); -    __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyInt_FromLong(__pyx_v_f_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_5); -    __pyx_t_6 = PyTuple_New(7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __pyx_cur_scope->__pyx_v_f_len; +    __Pyx_INCREF(__pyx_t_5); +    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); -    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); -    __Pyx_GIVEREF(__pyx_t_1); -    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); -    __Pyx_GIVEREF(__pyx_t_4); -    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_f_len); -    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_cur_scope->__pyx_v_f_len); -    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_f_len); -    __Pyx_INCREF(__pyx_int_neg_1); -    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_int_neg_1); -    __Pyx_GIVEREF(__pyx_int_neg_1); -    __Pyx_INCREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_int_0); -    __Pyx_GIVEREF(__pyx_int_0); -    __Pyx_INCREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_int_0); -    __Pyx_GIVEREF(__pyx_int_0); -    PyTuple_SET_ITEM(__pyx_t_6, 6, ((PyObject *)__pyx_t_5)); -    __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); -    __pyx_t_1 = 0; -    __pyx_t_4 = 0; -    __pyx_t_5 = 0; -    __pyx_t_5 = PyObject_Call(__pyx_cur_scope->__pyx_v_extract, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -    __Pyx_GOTREF(__pyx_t_5); -    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; +    __pyx_t_7 = __pyx_pf_3_sa_23HieroCachingRuleFactory_13get_f_phrases_extract(__pyx_cur_scope->__pyx_v_extract, __pyx_t_1, __pyx_t_4, __pyx_t_5, __pyx_int_neg_1, __pyx_int_0, __pyx_int_0, ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2201; __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_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; +    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; +    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2202 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2203   *             extract(f_i, f_i, f_len, -1, 0, 0, [])   *    *         return phrases             # <<<<<<<<<<<<<< @@ -65569,8 +66342,8 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct   * # Spans are _inclusive_ on both ends [i, j]   */    __Pyx_XDECREF(__pyx_r); -  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_phrases); -  __pyx_r = __pyx_cur_scope->__pyx_v_phrases; +  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_phrases)); +  __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_phrases);    goto __pyx_L0;    __pyx_r = Py_None; __Pyx_INCREF(Py_None); @@ -65580,6 +66353,7 @@ static PyObject *__pyx_pf_3_sa_23HieroCachingRuleFactory_37get_f_phrases(struct    __Pyx_XDECREF(__pyx_t_4);    __Pyx_XDECREF(__pyx_t_5);    __Pyx_XDECREF(__pyx_t_6); +  __Pyx_XDECREF(__pyx_t_7);    __Pyx_AddTraceback("_sa.HieroCachingRuleFactory.get_f_phrases", __pyx_clineno, __pyx_lineno, __pyx_filename);    __pyx_r = NULL;    __pyx_L0:; @@ -65596,12 +66370,14 @@ static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__py    PyObject *__pyx_v_vec = 0;    PyObject *__pyx_v_i = 0;    PyObject *__pyx_v_j = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("span_check (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -65616,24 +66392,21 @@ static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__py        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_check") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_check") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -65648,7 +66421,7 @@ static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__py    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_check", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_check", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -65659,7 +66432,7 @@ static PyObject *__pyx_pw_3_sa_17span_check(PyObject *__pyx_self, PyObject *__py    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2205 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206   *    * # Spans are _inclusive_ on both ends [i, j]   * def span_check(vec, i, j):             # <<<<<<<<<<<<<< @@ -65678,7 +66451,7 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_check", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2206 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2207   * # Spans are _inclusive_ on both ends [i, j]   * def span_check(vec, i, j):   *     k = i             # <<<<<<<<<<<<<< @@ -65688,7 +66461,7 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2207 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2208   * def span_check(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -65696,26 +66469,25 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,   *             return False   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2207; __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[8]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2208 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2209   *     k = i   *     while k <= j:   *         if vec[k]:             # <<<<<<<<<<<<<<   *             return False   *         k += 1   */ -    __pyx_t_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_k); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_GetItem(__pyx_v_vec, __pyx_v_k); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2209; __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[8]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (__pyx_t_2) { -      /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2209 +      /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2210   *     while k <= j:   *         if vec[k]:   *             return False             # <<<<<<<<<<<<<< @@ -65723,7 +66495,7 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,   *     return True   */        __Pyx_XDECREF(__pyx_r); -      __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_1);        __pyx_r = __pyx_t_1;        __pyx_t_1 = 0; @@ -65732,21 +66504,21 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,      }      __pyx_L5:; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2210 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2211   *         if vec[k]:   *             return False   *         k += 1             # <<<<<<<<<<<<<<   *     return True   *    */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1;      __pyx_t_1 = 0;    } -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2211 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2212   *             return False   *         k += 1   *     return True             # <<<<<<<<<<<<<< @@ -65754,7 +66526,7 @@ static PyObject *__pyx_pf_3_sa_16span_check(CYTHON_UNUSED PyObject *__pyx_self,   * def span_inc(vec, i, j):   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2211; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_r = __pyx_t_1;    __pyx_t_1 = 0; @@ -65780,12 +66552,14 @@ static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_    PyObject *__pyx_v_vec = 0;    PyObject *__pyx_v_i = 0;    PyObject *__pyx_v_j = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("span_inc (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -65800,24 +66574,21 @@ static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_inc") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_inc") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -65832,7 +66603,7 @@ static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_inc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_inc", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -65843,7 +66614,7 @@ static PyObject *__pyx_pw_3_sa_19span_inc(PyObject *__pyx_self, PyObject *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2213 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<< @@ -65864,7 +66635,7 @@ static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_inc", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2214 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2215   *    * def span_inc(vec, i, j):   *     k = i             # <<<<<<<<<<<<<< @@ -65874,7 +66645,7 @@ static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2215 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2216   * def span_inc(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -65882,13 +66653,12 @@ static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py   *         k += 1   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2215; __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[8]; __pyx_lineno = 2215; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2216 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2217   *     k = i   *     while k <= j:   *         vec[k] += 1             # <<<<<<<<<<<<<< @@ -65897,23 +66667,23 @@ static PyObject *__pyx_pf_3_sa_18span_inc(CYTHON_UNUSED PyObject *__pyx_self, Py   */      __Pyx_INCREF(__pyx_v_k);      __pyx_t_1 = __pyx_v_k; -    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2217 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2218   *     while k <= j:   *         vec[k] += 1   *         k += 1             # <<<<<<<<<<<<<<   *    * def span_dec(vec, i, j):   */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1; @@ -65942,12 +66712,14 @@ static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_    PyObject *__pyx_v_vec = 0;    PyObject *__pyx_v_i = 0;    PyObject *__pyx_v_j = 0; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("span_dec (wrapper)", 0); -  __pyx_self = __pyx_self;    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__vec,&__pyx_n_s__i,&__pyx_n_s__j,0};      PyObject* values[3] = {0,0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -65962,24 +66734,21 @@ static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__vec)) != 0)) kw_args--;          else goto __pyx_L5_argtuple_error;          case  1: -        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i); -        if (likely(values[1])) kw_args--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__i)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }          case  2: -        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j); -        if (likely(values[2])) kw_args--; +        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__j)) != 0)) kw_args--;          else { -          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +          __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          }        }        if (unlikely(kw_args > 0)) { -        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_dec") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "span_dec") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}        }      } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {        goto __pyx_L5_argtuple_error; @@ -65994,7 +66763,7 @@ static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_    }    goto __pyx_L4_argument_unpacking_done;    __pyx_L5_argtuple_error:; -  __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;} +  __Pyx_RaiseArgtupleInvalid("span_dec", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}    __pyx_L3_error:;    __Pyx_AddTraceback("_sa.span_dec", __pyx_clineno, __pyx_lineno, __pyx_filename);    __Pyx_RefNannyFinishContext(); @@ -66005,7 +66774,7 @@ static PyObject *__pyx_pw_3_sa_21span_dec(PyObject *__pyx_self, PyObject *__pyx_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2219 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<< @@ -66026,7 +66795,7 @@ static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("span_dec", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2220 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2221   *    * def span_dec(vec, i, j):   *     k = i             # <<<<<<<<<<<<<< @@ -66036,7 +66805,7 @@ static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py    __Pyx_INCREF(__pyx_v_i);    __pyx_v_k = __pyx_v_i; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2221 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2222   * def span_dec(vec, i, j):   *     k = i   *     while k <= j:             # <<<<<<<<<<<<<< @@ -66044,13 +66813,12 @@ static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py   *         k += 1   */    while (1) { -    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2221; __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[8]; __pyx_lineno = 2221; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyObject_RichCompare(__pyx_v_k, __pyx_v_j, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;      if (!__pyx_t_2) break; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2222 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2223   *     k = i   *     while k <= j:   *         vec[k] -= 1             # <<<<<<<<<<<<<< @@ -66058,21 +66826,21 @@ static PyObject *__pyx_pf_3_sa_20span_dec(CYTHON_UNUSED PyObject *__pyx_self, Py   */      __Pyx_INCREF(__pyx_v_k);      __pyx_t_1 = __pyx_v_k; -    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = PyObject_GetItem(__pyx_v_vec, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_3); -    __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (PyObject_SetItem(__pyx_v_vec, __pyx_t_1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2223 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2224   *     while k <= j:   *         vec[k] -= 1   *         k += 1             # <<<<<<<<<<<<<<   */ -    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2223; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_k, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_1);      __Pyx_DECREF(__pyx_v_k);      __pyx_v_k = __pyx_t_1; @@ -66108,7 +66876,7 @@ static int __pyx_pw_3_sa_13FeatureVector_1__cinit__(PyObject *__pyx_v_self, PyOb    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":7 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":7   *    * cdef class FeatureVector:   *     def __cinit__(self):             # <<<<<<<<<<<<<< @@ -66127,16 +66895,16 @@ static int __pyx_pf_3_sa_13FeatureVector___cinit__(struct __pyx_obj_3_sa_Feature    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__cinit__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":8 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":8   * cdef class FeatureVector:   *     def __cinit__(self):   *         self.names = IntList(INITIAL_CAPACITY, INCREMENT)             # <<<<<<<<<<<<<<   *         self.values = FloatList(INITIAL_CAPACITY, INCREMENT)   *    */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 8; __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[13]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); @@ -66155,16 +66923,16 @@ static int __pyx_pf_3_sa_13FeatureVector___cinit__(struct __pyx_obj_3_sa_Feature    __pyx_v_self->names = ((struct __pyx_obj_3_sa_IntList *)__pyx_t_2);    __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":9 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":9   *     def __cinit__(self):   *         self.names = IntList(INITIAL_CAPACITY, INCREMENT)   *         self.values = FloatList(INITIAL_CAPACITY, INCREMENT)             # <<<<<<<<<<<<<<   *    *     def set(self, unsigned name, float value):   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__INCREMENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 9; __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[13]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); @@ -66201,11 +66969,14 @@ static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyOb  static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {    unsigned int __pyx_v_name;    float __pyx_v_value; -  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__value,0}; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    PyObject *__pyx_r = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("set (wrapper)", 0);    { +    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__value,0};      PyObject* values[2] = {0,0};      if (unlikely(__pyx_kwds)) {        Py_ssize_t kw_args; @@ -66219,12 +66990,10 @@ static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyOb        kw_args = PyDict_Size(__pyx_kwds);        switch (pos_args) {          case  0: -        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name); -        if (likely(values[0])) kw_args--; +        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 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--; +        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value)) != 0)) kw_args--;          else {            __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L3_error;}          } @@ -66254,7 +67023,7 @@ static PyObject *__pyx_pw_3_sa_13FeatureVector_3set(PyObject *__pyx_v_self, PyOb    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":11 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":11   *         self.values = FloatList(INITIAL_CAPACITY, INCREMENT)   *    *     def set(self, unsigned name, float value):             # <<<<<<<<<<<<<< @@ -66272,7 +67041,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_2set(struct __pyx_obj_3_sa_Featur    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("set", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":12 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":12   *    *     def set(self, unsigned name, float value):   *         self.names.append(name)             # <<<<<<<<<<<<<< @@ -66286,7 +67055,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_2set(struct __pyx_obj_3_sa_Featur    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":13 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":13   *     def set(self, unsigned name, float value):   *         self.names.append(name)   *         self.values.append(value)             # <<<<<<<<<<<<<< @@ -66325,7 +67094,7 @@ static PyObject *__pyx_pw_3_sa_13FeatureVector_5__iter__(PyObject *__pyx_v_self)    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":15 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":15   *         self.values.append(value)   *    *     def __iter__(self):             # <<<<<<<<<<<<<< @@ -66341,7 +67110,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_4__iter__(struct __pyx_obj_3_sa_F    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__iter__", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)__pyx_ptype_3_sa___pyx_scope_struct_27___iter__->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_27___iter__, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(__pyx_ptype_3_sa___pyx_scope_struct_27___iter__, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -66379,6 +67148,9 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject    int __pyx_t_4;    PyObject *__pyx_t_5 = NULL;    PyObject *__pyx_t_6 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -66391,7 +67163,7 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject    __pyx_L3_first_run:;    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":17   *     def __iter__(self):   *         cdef unsigned i   *         for i in range(self.names.len):             # <<<<<<<<<<<<<< @@ -66402,20 +67174,20 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject    for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {      __pyx_cur_scope->__pyx_v_i = __pyx_t_2; -    /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":18 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":18   *         cdef unsigned i   *         for i in range(self.names.len):   *             yield (FD.word(self.names[i]), self.values[i])             # <<<<<<<<<<<<<<   *    *     def __str__(self):   */ -    __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->names), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->names), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __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[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -    __pyx_t_3 = PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_3_sa_FD->__pyx_vtab)->word(__pyx_v_3_sa_FD, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_3 = __Pyx_PyBytes_FromString(((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_3_sa_FD->__pyx_vtab)->word(__pyx_v_3_sa_FD, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_3)); -    __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->values), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->values), __pyx_cur_scope->__pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 18; __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[13]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); @@ -66449,6 +67221,7 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_6generator5(__pyx_GeneratorObject    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } @@ -66465,7 +67238,7 @@ static PyObject *__pyx_pw_3_sa_13FeatureVector_8__str__(PyObject *__pyx_v_self)  }  static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":21 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21   *    *     def __str__(self):   *         return ' '.join('%s=%s' % feat for feat in self)             # <<<<<<<<<<<<<< @@ -66481,7 +67254,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str___genexpr(PyObject *__pyx_    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("genexpr", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(__pyx_ptype_3_sa___pyx_scope_struct_29_genexpr, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -66517,6 +67290,9 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_Gener    Py_ssize_t __pyx_t_2;    PyObject *(*__pyx_t_3)(PyObject *);    PyObject *__pyx_t_4 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("None", 0);    switch (__pyx_generator->resume_label) { @@ -66540,10 +67316,18 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_Gener    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -66560,7 +67344,7 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_Gener      __Pyx_GIVEREF(__pyx_t_4);      __pyx_cur_scope->__pyx_v_feat = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_155), __pyx_cur_scope->__pyx_v_feat); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_167), __pyx_cur_scope->__pyx_v_feat); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(((PyObject *)__pyx_t_4));      __pyx_r = ((PyObject *)__pyx_t_4);      __pyx_t_4 = 0; @@ -66591,11 +67375,12 @@ static PyObject *__pyx_gb_3_sa_13FeatureVector_7__str___2generator17(__pyx_Gener    __pyx_L0:;    __Pyx_XDECREF(__pyx_r);    __pyx_generator->resume_label = -1; +  __Pyx_Generator_clear((PyObject*)__pyx_generator);    __Pyx_RefNannyFinishContext();    return NULL;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":20 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":20   *             yield (FD.word(self.names[i]), self.values[i])   *    *     def __str__(self):             # <<<<<<<<<<<<<< @@ -66614,7 +67399,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_Fe    const char *__pyx_filename = NULL;    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__str__", 0); -  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)__pyx_ptype_3_sa___pyx_scope_struct_28___str__->tp_new(__pyx_ptype_3_sa___pyx_scope_struct_28___str__, __pyx_empty_tuple, NULL); +  __pyx_cur_scope = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(__pyx_ptype_3_sa___pyx_scope_struct_28___str__, __pyx_empty_tuple, NULL);    if (unlikely(!__pyx_cur_scope)) {      __Pyx_RefNannyFinishContext();      return NULL; @@ -66624,7 +67409,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_Fe    __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);    __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self); -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":21   *    *     def __str__(self):   *         return ' '.join('%s=%s' % feat for feat in self)             # <<<<<<<<<<<<<< @@ -66632,7 +67417,7 @@ static PyObject *__pyx_pf_3_sa_13FeatureVector_7__str__(struct __pyx_obj_3_sa_Fe   * cdef class Scorer:   */    __Pyx_XDECREF(__pyx_r); -  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_67), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_s_69), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __pyx_t_2 = __pyx_pf_3_sa_13FeatureVector_7__str___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); @@ -66680,7 +67465,7 @@ static int __pyx_pw_3_sa_6Scorer_1__init__(PyObject *__pyx_v_self, PyObject *__p    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":25 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":25   * cdef class Scorer:   *     cdef models   *     def __init__(self, *models):             # <<<<<<<<<<<<<< @@ -66703,7 +67488,7 @@ static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("__init__", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":26 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":26   *     cdef models   *     def __init__(self, *models):   *         names = [FD.index(<char *>model.__name__) for model in models]             # <<<<<<<<<<<<<< @@ -66715,25 +67500,28 @@ static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_    __pyx_t_2 = ((PyObject *)__pyx_v_models); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;    for (;;) {      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++; +    #if CYTHON_COMPILING_IN_CPYTHON +    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    #else +    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    #endif      __Pyx_XDECREF(__pyx_v_model);      __pyx_v_model = __pyx_t_4;      __pyx_t_4 = 0; -    __pyx_t_4 = PyObject_GetAttr(__pyx_v_model, __pyx_n_s____name__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s____name__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    __pyx_t_5 = PyBytes_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;      __pyx_t_4 = PyInt_FromLong(((struct __pyx_vtabstruct_3_sa_StringMap *)__pyx_v_3_sa_FD->__pyx_vtab)->index(__pyx_v_3_sa_FD, ((char *)__pyx_t_5))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4); -    if (unlikely(PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;    }    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  __Pyx_INCREF(((PyObject *)__pyx_t_1)); -  __pyx_v_names = __pyx_t_1; -  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; +  __pyx_v_names = ((PyObject*)__pyx_t_1); +  __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":27 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":27   *     def __init__(self, *models):   *         names = [FD.index(<char *>model.__name__) for model in models]   *         self.models = zip(names, models)             # <<<<<<<<<<<<<< @@ -66772,7 +67560,7 @@ static int __pyx_pf_3_sa_6Scorer___init__(struct __pyx_obj_3_sa_Scorer *__pyx_v_    return __pyx_r;  } -/* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":29 +/* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":29   *         self.models = zip(names, models)   *    *     cdef FeatureVector score(self, ctx):             # <<<<<<<<<<<<<< @@ -66799,7 +67587,7 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __    int __pyx_clineno = 0;    __Pyx_RefNannySetupContext("score", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":30   *    *     cdef FeatureVector score(self, ctx):   *         cdef FeatureVector scores = FeatureVector()             # <<<<<<<<<<<<<< @@ -66811,7 +67599,7 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __    __pyx_v_scores = ((struct __pyx_obj_3_sa_FeatureVector *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":31   *     cdef FeatureVector score(self, ctx):   *         cdef FeatureVector scores = FeatureVector()   *         for name, model in self.models:             # <<<<<<<<<<<<<< @@ -66829,10 +67617,18 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __    for (;;) {      if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; -      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; +      #if CYTHON_COMPILING_IN_CPYTHON +      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #else +      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      #endif      } else {        __pyx_t_4 = __pyx_t_3(__pyx_t_1);        if (unlikely(!__pyx_t_4)) { @@ -66846,27 +67642,35 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __      }      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {        PyObject* sequence = __pyx_t_4; +      #if CYTHON_COMPILING_IN_CPYTHON +      Py_ssize_t size = Py_SIZE(sequence); +      #else +      Py_ssize_t size = PySequence_Size(sequence); +      #endif +      if (unlikely(size != 2)) { +        if (size > 2) __Pyx_RaiseTooManyValuesError(2); +        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); +        {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      } +      #if CYTHON_COMPILING_IN_CPYTHON        if (likely(PyTuple_CheckExact(sequence))) { -        if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) { -          if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);           __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);         } else { -        if (unlikely(PyList_GET_SIZE(sequence) != 2)) { -          if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2); -          else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence)); -          {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -        }          __pyx_t_5 = PyList_GET_ITEM(sequence, 0);           __pyx_t_6 = PyList_GET_ITEM(sequence, 1);         }        __Pyx_INCREF(__pyx_t_5);        __Pyx_INCREF(__pyx_t_6); +      #else +      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_5); +      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __Pyx_GOTREF(__pyx_t_6); +      #endif        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; -    } else { +    } else +    {        Py_ssize_t index = -1;        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __Pyx_GOTREF(__pyx_t_7); @@ -66877,12 +67681,13 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;        __Pyx_GOTREF(__pyx_t_6);        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +      __pyx_t_8 = NULL;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;        goto __pyx_L6_unpacking_done;        __pyx_L5_unpacking_failed:;        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; -      if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear(); -      if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index); +      __pyx_t_8 = NULL; +      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);        {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}        __pyx_L6_unpacking_done:;      } @@ -66893,13 +67698,13 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __      __pyx_v_model = __pyx_t_6;      __pyx_t_6 = 0; -    /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":32 +    /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":32   *         cdef FeatureVector scores = FeatureVector()   *         for name, model in self.models:   *             scores.set(name, model(ctx))             # <<<<<<<<<<<<<<   *         return scores   */ -    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_scores), __pyx_n_s__set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_scores), __pyx_n_s__set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_4);      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}      __Pyx_GOTREF(__pyx_t_6); @@ -66925,7 +67730,7 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __    }    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":33 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":33   *         for name, model in self.models:   *             scores.set(name, model(ctx))   *         return scores             # <<<<<<<<<<<<<< @@ -66953,162 +67758,259 @@ static struct __pyx_obj_3_sa_FeatureVector *__pyx_f_3_sa_6Scorer_score(struct __    __Pyx_RefNannyFinishContext();    return __pyx_r;  } -static struct __pyx_vtabstruct_3_sa_FloatList __pyx_vtable_3_sa_FloatList; +static struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory __pyx_vtable_3_sa_HieroCachingRuleFactory; -static PyObject *__pyx_tp_new_3_sa_FloatList(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_FloatList *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_FloatList *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_FloatList; -  if (__pyx_pw_3_sa_9FloatList_1__cinit__(o, a, k) < 0) { +static PyObject *__pyx_tp_new_3_sa_HieroCachingRuleFactory(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_HieroCachingRuleFactory; +  p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None); +  p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None); +  p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None); +  p->precomputed_index = Py_None; Py_INCREF(Py_None); +  p->precomputed_collocations = Py_None; Py_INCREF(Py_None); +  p->precompute_file = Py_None; Py_INCREF(Py_None); +  p->max_rank = Py_None; Py_INCREF(Py_None); +  p->prev_norm_prefix = Py_None; Py_INCREF(Py_None); +  p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); +  p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); +  p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); +  p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None); +  p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->samples_f = Py_None; Py_INCREF(Py_None); +  p->phrases_f = Py_None; Py_INCREF(Py_None); +  p->phrases_e = Py_None; Py_INCREF(Py_None); +  p->phrases_fe = Py_None; Py_INCREF(Py_None); +  p->phrases_al = Py_None; Py_INCREF(Py_None); +  p->bilex_f = Py_None; Py_INCREF(Py_None); +  p->bilex_e = Py_None; Py_INCREF(Py_None); +  p->bilex_fe = Py_None; Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o;  } -static void __pyx_tp_dealloc_3_sa_FloatList(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_9FloatList_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); -  } +static void __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory(PyObject *o) { +  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->rules); +  Py_CLEAR(p->sampler); +  Py_CLEAR(p->scorer); +  Py_CLEAR(p->precomputed_index); +  Py_CLEAR(p->precomputed_collocations); +  Py_CLEAR(p->precompute_file); +  Py_CLEAR(p->max_rank); +  Py_CLEAR(p->prev_norm_prefix); +  Py_CLEAR(p->fsa); +  Py_CLEAR(p->fda); +  Py_CLEAR(p->eda); +  Py_CLEAR(p->alignment); +  Py_CLEAR(p->eid2symid); +  Py_CLEAR(p->fid2symid); +  Py_CLEAR(p->findexes); +  Py_CLEAR(p->findexes1); +  Py_CLEAR(p->samples_f); +  Py_CLEAR(p->phrases_f); +  Py_CLEAR(p->phrases_e); +  Py_CLEAR(p->phrases_fe); +  Py_CLEAR(p->phrases_al); +  Py_CLEAR(p->bilex_f); +  Py_CLEAR(p->bilex_e); +  Py_CLEAR(p->bilex_fe);    (*Py_TYPE(o)->tp_free)(o);  } -static PyObject *__pyx_sq_item_3_sa_FloatList(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_3_sa_FloatList(PyObject *o, PyObject *i, PyObject *v) { -  if (v) { -    return __pyx_pw_3_sa_9FloatList_7__setitem__(o, i, v); +static int __pyx_tp_traverse_3_sa_HieroCachingRuleFactory(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; +  if (p->rules) { +    e = (*v)(((PyObject*)p->rules), a); if (e) return e;    } -  else { -    PyErr_Format(PyExc_NotImplementedError, -      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name); -    return -1; +  if (p->sampler) { +    e = (*v)(((PyObject*)p->sampler), a); if (e) return e; +  } +  if (p->scorer) { +    e = (*v)(((PyObject*)p->scorer), a); if (e) return e; +  } +  if (p->precomputed_index) { +    e = (*v)(p->precomputed_index, a); if (e) return e; +  } +  if (p->precomputed_collocations) { +    e = (*v)(p->precomputed_collocations, a); if (e) return e; +  } +  if (p->precompute_file) { +    e = (*v)(p->precompute_file, a); if (e) return e; +  } +  if (p->max_rank) { +    e = (*v)(p->max_rank, a); if (e) return e; +  } +  if (p->prev_norm_prefix) { +    e = (*v)(p->prev_norm_prefix, a); if (e) return e; +  } +  if (p->fsa) { +    e = (*v)(((PyObject*)p->fsa), a); if (e) return e; +  } +  if (p->fda) { +    e = (*v)(((PyObject*)p->fda), a); if (e) return e;    } +  if (p->eda) { +    e = (*v)(((PyObject*)p->eda), a); if (e) return e; +  } +  if (p->alignment) { +    e = (*v)(((PyObject*)p->alignment), a); if (e) return e; +  } +  if (p->eid2symid) { +    e = (*v)(((PyObject*)p->eid2symid), a); if (e) return e; +  } +  if (p->fid2symid) { +    e = (*v)(((PyObject*)p->fid2symid), a); if (e) return e; +  } +  if (p->findexes) { +    e = (*v)(((PyObject*)p->findexes), a); if (e) return e; +  } +  if (p->findexes1) { +    e = (*v)(((PyObject*)p->findexes1), a); if (e) return e; +  } +  if (p->samples_f) { +    e = (*v)(p->samples_f, a); if (e) return e; +  } +  if (p->phrases_f) { +    e = (*v)(p->phrases_f, a); if (e) return e; +  } +  if (p->phrases_e) { +    e = (*v)(p->phrases_e, a); if (e) return e; +  } +  if (p->phrases_fe) { +    e = (*v)(p->phrases_fe, a); if (e) return e; +  } +  if (p->phrases_al) { +    e = (*v)(p->phrases_al, a); if (e) return e; +  } +  if (p->bilex_f) { +    e = (*v)(p->bilex_f, a); if (e) return e; +  } +  if (p->bilex_e) { +    e = (*v)(p->bilex_e, a); if (e) return e; +  } +  if (p->bilex_fe) { +    e = (*v)(p->bilex_fe, a); if (e) return e; +  } +  return 0;  } -static PyMethodDef __pyx_methods_3_sa_FloatList[] = { -  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_9FloatList_11append, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_9FloatList_13write, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_9FloatList_15read, METH_O, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_FloatList = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_FloatList = { -  __pyx_pw_3_sa_9FloatList_9__len__, /*sq_length*/ -  0, /*sq_concat*/ -  0, /*sq_repeat*/ -  __pyx_sq_item_3_sa_FloatList, /*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_FloatList = { -  __pyx_pw_3_sa_9FloatList_9__len__, /*mp_length*/ -  __pyx_pw_3_sa_9FloatList_5__getitem__, /*mp_subscript*/ -  __pyx_mp_ass_subscript_3_sa_FloatList, /*mp_ass_subscript*/ -}; +static int __pyx_tp_clear_3_sa_HieroCachingRuleFactory(PyObject *o) { +  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->rules); +  p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->sampler); +  p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->scorer); +  p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->precomputed_index); +  p->precomputed_index = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->precomputed_collocations); +  p->precomputed_collocations = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->precompute_file); +  p->precompute_file = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->max_rank); +  p->max_rank = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->prev_norm_prefix); +  p->prev_norm_prefix = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->fsa); +  p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->fda); +  p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->eda); +  p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->alignment); +  p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->eid2symid); +  p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->fid2symid); +  p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->findexes); +  p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->findexes1); +  p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->samples_f); +  p->samples_f = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->phrases_f); +  p->phrases_f = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->phrases_e); +  p->phrases_e = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->phrases_fe); +  p->phrases_fe = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->phrases_al); +  p->phrases_al = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->bilex_f); +  p->bilex_f = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->bilex_e); +  p->bilex_e = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->bilex_fe); +  p->bilex_fe = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} -static PyBufferProcs __pyx_tp_as_buffer_FloatList = { -  #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 +static PyMethodDef __pyx_methods_3_sa_HieroCachingRuleFactory[] = { +  {__Pyx_NAMESTR("configure"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_2configure)}, +  {__Pyx_NAMESTR("pattern2phrase"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("pattern2phrase_plus"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_precomputed_collocation"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collocation, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("advance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_all_nodes_isteps_away"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_away, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("reachable"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("shortest"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_next_states"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("input"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_23input, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_22input)}, +  {__Pyx_NAMESTR("add_instance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("form_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("fmt_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("dump_online_stats"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("dump_online_rules"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("online_ctx_lookup"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_f_phrases"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_38get_f_phrases, METH_O, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa_FloatList = { +static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.FloatList"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_FloatList), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.HieroCachingRuleFactory"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_HieroCachingRuleFactory), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_FloatList, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -67118,24 +68020,24 @@ static PyTypeObject __pyx_type_3_sa_FloatList = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_FloatList, /*tp_as_number*/ -  &__pyx_tp_as_sequence_FloatList, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_FloatList, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_FloatList, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -  0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  __Pyx_DOCSTR("This RuleFactory implements a caching \n    method using TrieTable, which makes phrase\n    generation somewhat speedier -- phrases only\n    need to be extracted once (however, it is\n    quite possible they need to be scored \n    for each input sentence, for contextual models)"), /*tp_doc*/ +  __pyx_tp_traverse_3_sa_HieroCachingRuleFactory, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_HieroCachingRuleFactory, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_FloatList, /*tp_methods*/ +  __pyx_methods_3_sa_HieroCachingRuleFactory, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -67145,7 +68047,7 @@ static PyTypeObject __pyx_type_3_sa_FloatList = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_FloatList, /*tp_new*/ +  __pyx_tp_new_3_sa_HieroCachingRuleFactory, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -67158,169 +68060,66 @@ static PyTypeObject __pyx_type_3_sa_FloatList = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_IntList __pyx_vtable_3_sa_IntList; -static PyObject *__pyx_tp_new_3_sa_IntList(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_IntList *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_IntList *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_IntList; -  if (__pyx_pw_3_sa_7IntList_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *__pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[--__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o); +  p->__pyx_v_lattice = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_IntList(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_7IntList_15__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_lattice); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence))) { +    __pyx_freelist_3_sa___pyx_scope_struct_9_decode_sentence[__pyx_freecount_3_sa___pyx_scope_struct_9_decode_sentence++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o);    } -  (*Py_TYPE(o)->tp_free)(o); -} -static PyObject *__pyx_sq_item_3_sa_IntList(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_3_sa_IntList(PyObject *o, PyObject *i, PyObject *v) { -  if (v) { -    return __pyx_pw_3_sa_7IntList_22__setitem__(o, i, v); -  } -  else { -    PyErr_Format(PyExc_NotImplementedError, -      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name); -    return -1; +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; +  if (p->__pyx_v_lattice) { +    e = (*v)(p->__pyx_v_lattice, a); if (e) return e;    } +  return 0;  } -static PyMethodDef __pyx_methods_3_sa_IntList[] = { -  {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pw_3_sa_7IntList_5index, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("partition"), (PyCFunction)__pyx_pw_3_sa_7IntList_7partition, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("_doquicksort"), (PyCFunction)__pyx_pw_3_sa_7IntList_9_doquicksort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("sort"), (PyCFunction)__pyx_pw_3_sa_7IntList_11sort, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_3_sa_7IntList_13reset, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_size"), (PyCFunction)__pyx_pw_3_sa_7IntList_26get_size, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_7IntList_28append, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pw_3_sa_7IntList_30extend, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_7IntList_32write, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_7IntList_34read, METH_O, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_IntList = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_IntList = { -  __pyx_pw_3_sa_7IntList_24__len__, /*sq_length*/ -  0, /*sq_concat*/ -  0, /*sq_repeat*/ -  __pyx_sq_item_3_sa_IntList, /*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_IntList = { -  __pyx_pw_3_sa_7IntList_24__len__, /*mp_length*/ -  __pyx_pw_3_sa_7IntList_20__getitem__, /*mp_subscript*/ -  __pyx_mp_ass_subscript_3_sa_IntList, /*mp_ass_subscript*/ -}; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->__pyx_v_lattice); +  p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} -static PyBufferProcs __pyx_tp_as_buffer_IntList = { -  #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 +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence[] = { +  {0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa_IntList = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.IntList"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_IntList), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_9_decode_sentence"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_IntList, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -67330,24 +68129,24 @@ static PyTypeObject __pyx_type_3_sa_IntList = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_IntList, /*tp_as_number*/ -  &__pyx_tp_as_sequence_IntList, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_IntList, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/ -  __pyx_pw_3_sa_7IntList_3__str__, /*tp_str*/ +  0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_IntList, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  __pyx_pw_3_sa_7IntList_17__iter__, /*tp_iter*/ +  0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_IntList, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -67357,7 +68156,7 @@ static PyTypeObject __pyx_type_3_sa_IntList = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_IntList, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -67371,159 +68170,81 @@ static PyTypeObject __pyx_type_3_sa_IntList = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa_FeatureVector(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_FeatureVector *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_FeatureVector *)o); -  p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_13FeatureVector_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_17_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_a = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_FeatureVector(PyObject *o) { -  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o; -  Py_XDECREF(((PyObject *)p->names)); -  Py_XDECREF(((PyObject *)p->values)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_a); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_17_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_17_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa_FeatureVector(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o; -  if (p->names) { -    e = (*v)(((PyObject*)p->names), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->values) { -    e = (*v)(((PyObject*)p->values), a); if (e) return e; +  if (p->__pyx_v_a) { +    e = (*v)(p->__pyx_v_a, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_FeatureVector(PyObject *o) { -  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->names); -  p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->values); -  p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_a); +  p->__pyx_v_a = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa_FeatureVector[] = { -  {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pw_3_sa_13FeatureVector_3set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_17_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_FeatureVector = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_FeatureVector = { -  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_FeatureVector = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_FeatureVector = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_FeatureVector = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.FeatureVector"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_FeatureVector), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_17_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_FeatureVector, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -67533,24 +68254,24 @@ static PyTypeObject __pyx_type_3_sa_FeatureVector = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_FeatureVector, /*tp_as_number*/ -  &__pyx_tp_as_sequence_FeatureVector, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_FeatureVector, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/ -  __pyx_pw_3_sa_13FeatureVector_8__str__, /*tp_str*/ +  0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_FeatureVector, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_FeatureVector, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_FeatureVector, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  __pyx_pw_3_sa_13FeatureVector_5__iter__, /*tp_iter*/ +  0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_FeatureVector, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_17_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -67560,7 +68281,7 @@ static PyTypeObject __pyx_type_3_sa_FeatureVector = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_FeatureVector, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -67573,194 +68294,111 @@ static PyTypeObject __pyx_type_3_sa_FeatureVector = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_Phrase __pyx_vtable_3_sa_Phrase; -static PyObject *__pyx_tp_new_3_sa_Phrase(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Phrase *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Phrase *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_Phrase; -  if (__pyx_pw_3_sa_6Phrase_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_20_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_word = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_Phrase(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_6Phrase_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_word); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_20_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_20_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o);    } -  (*Py_TYPE(o)->tp_free)(o);  } -static PyObject *__pyx_sq_item_3_sa_Phrase(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_tp_traverse_3_sa___pyx_scope_struct_20_genexpr(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  } +  if (p->__pyx_v_word) { +    e = (*v)(p->__pyx_v_word, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  } +  return 0;  } -static PyObject *__pyx_getprop_3_sa_6Phrase_words(PyObject *o, void *x) { -  return __pyx_pw_3_sa_6Phrase_5words_1__get__(o); +static int __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_word); +  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0;  } -static PyMethodDef __pyx_methods_3_sa_Phrase[] = { -  {__Pyx_NAMESTR("handle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_7handle, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_3_sa_6Phrase_6handle)}, -  {__Pyx_NAMESTR("strhandle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_9strhandle, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_6Phrase_11arity, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("getvarpos"), (PyCFunction)__pyx_pw_3_sa_6Phrase_13getvarpos, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("getvar"), (PyCFunction)__pyx_pw_3_sa_6Phrase_15getvar, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("clen"), (PyCFunction)__pyx_pw_3_sa_6Phrase_17clen, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("getchunk"), (PyCFunction)__pyx_pw_3_sa_6Phrase_19getchunk, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("subst"), (PyCFunction)__pyx_pw_3_sa_6Phrase_32subst, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_20_genexpr[] = {    {0, 0, 0, 0}  }; -static struct PyGetSetDef __pyx_getsets_3_sa_Phrase[] = { -  {(char *)"words", __pyx_getprop_3_sa_6Phrase_words, 0, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Phrase = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Phrase = { -  __pyx_pw_3_sa_6Phrase_25__len__, /*sq_length*/ -  0, /*sq_concat*/ -  0, /*sq_repeat*/ -  __pyx_sq_item_3_sa_Phrase, /*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_Phrase = { -  __pyx_pw_3_sa_6Phrase_25__len__, /*mp_length*/ -  __pyx_pw_3_sa_6Phrase_27__getitem__, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Phrase = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Phrase = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Phrase"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Phrase), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_20_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Phrase, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  __pyx_pw_3_sa_6Phrase_21__cmp__, /*tp_compare*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_Phrase, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Phrase, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Phrase, /*tp_as_mapping*/ -  __pyx_pw_3_sa_6Phrase_23__hash__, /*tp_hash*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/    0, /*tp_call*/ -  __pyx_pw_3_sa_6Phrase_5__str__, /*tp_str*/ +  0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Phrase, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_20_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  __pyx_pw_3_sa_6Phrase_29__iter__, /*tp_iter*/ +  0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_Phrase, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_20_genexpr, /*tp_methods*/    0, /*tp_members*/ -  __pyx_getsets_3_sa_Phrase, /*tp_getset*/ +  0, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -67768,7 +68406,7 @@ static PyTypeObject __pyx_type_3_sa_Phrase = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Phrase, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -67782,220 +68420,134 @@ static PyTypeObject __pyx_type_3_sa_Phrase = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa_Rule(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Rule *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Rule *)o); -  p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); -  p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); -  p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None); -  p->word_alignments = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_4Rule_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *__pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[--__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o); +  p->__pyx_v_ngram = 0; +  p->__pyx_v_ngram_start = 0; +  p->__pyx_v_ngram_starts = 0; +  p->__pyx_v_run_start = 0; +  p->__pyx_v_self = 0; +  p->__pyx_v_veb = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_Rule(PyObject *o) { -  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o; -  Py_XDECREF(((PyObject *)p->f)); -  Py_XDECREF(((PyObject *)p->e)); -  Py_XDECREF(((PyObject *)p->scores)); -  Py_XDECREF(p->word_alignments); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_ngram); +  Py_CLEAR(p->__pyx_v_ngram_start); +  Py_CLEAR(p->__pyx_v_ngram_starts); +  Py_CLEAR(p->__pyx_v_run_start); +  Py_CLEAR(p->__pyx_v_self); +  Py_CLEAR(p->__pyx_v_veb); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats))) { +    __pyx_freelist_3_sa___pyx_scope_struct_3_compute_stats[__pyx_freecount_3_sa___pyx_scope_struct_3_compute_stats++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa_Rule(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o; -  if (p->f) { -    e = (*v)(((PyObject*)p->f), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o; +  if (p->__pyx_v_ngram) { +    e = (*v)(p->__pyx_v_ngram, a); if (e) return e;    } -  if (p->e) { -    e = (*v)(((PyObject*)p->e), a); if (e) return e; +  if (p->__pyx_v_ngram_start) { +    e = (*v)(((PyObject*)p->__pyx_v_ngram_start), a); if (e) return e;    } -  if (p->scores) { -    e = (*v)(((PyObject*)p->scores), a); if (e) return e; +  if (p->__pyx_v_ngram_starts) { +    e = (*v)(p->__pyx_v_ngram_starts, a); if (e) return e;    } -  if (p->word_alignments) { -    e = (*v)(p->word_alignments, a); if (e) return e; +  if (p->__pyx_v_run_start) { +    e = (*v)(((PyObject*)p->__pyx_v_run_start), a); if (e) return e; +  } +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  } +  if (p->__pyx_v_veb) { +    e = (*v)(((PyObject*)p->__pyx_v_veb), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_Rule(PyObject *o) { -  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->f); -  p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_ngram); +  p->__pyx_v_ngram = ((PyObject*)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->e); -  p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_ngram_start); +  p->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->scores); -  p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_ngram_starts); +  p->__pyx_v_ngram_starts = ((PyObject*)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->word_alignments); -  p->word_alignments = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_run_start); +  p->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_LCP *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_veb); +  p->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyObject *__pyx_getprop_3_sa_4Rule_f(PyObject *o, void *x) { -  return __pyx_pw_3_sa_4Rule_1f_1__get__(o); -} - -static PyObject *__pyx_getprop_3_sa_4Rule_e(PyObject *o, void *x) { -  return __pyx_pw_3_sa_4Rule_1e_1__get__(o); -} - -static PyMethodDef __pyx_methods_3_sa_Rule[] = { -  {__Pyx_NAMESTR("fmerge"), (PyCFunction)__pyx_pw_3_sa_4Rule_7fmerge, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_4Rule_9arity, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("alignments"), (PyCFunction)__pyx_pw_3_sa_4Rule_13alignments, METH_NOARGS, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats[] = {    {0, 0, 0, 0}  }; -static struct PyGetSetDef __pyx_getsets_3_sa_Rule[] = { -  {(char *)"f", __pyx_getprop_3_sa_4Rule_f, 0, 0, 0}, -  {(char *)"e", __pyx_getprop_3_sa_4Rule_e, 0, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Rule = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Rule = { -  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_Rule = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Rule = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Rule = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Rule"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Rule), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_3_compute_stats"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Rule, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  __pyx_pw_3_sa_4Rule_5__cmp__, /*tp_compare*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_Rule, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Rule, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Rule, /*tp_as_mapping*/ -  __pyx_pw_3_sa_4Rule_3__hash__, /*tp_hash*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/    0, /*tp_call*/ -  __pyx_pw_3_sa_4Rule_11__str__, /*tp_str*/ +  0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Rule, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Rule, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Rule, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_Rule, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats, /*tp_methods*/    0, /*tp_members*/ -  __pyx_getsets_3_sa_Rule, /*tp_getset*/ +  0, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -68003,7 +68555,7 @@ static PyTypeObject __pyx_type_3_sa_Rule = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Rule, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -68016,141 +68568,82 @@ static PyTypeObject __pyx_type_3_sa_Rule = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_StringMap __pyx_vtable_3_sa_StringMap; -static PyObject *__pyx_tp_new_3_sa_StringMap(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_StringMap *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_StringMap *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_StringMap; -  if (__pyx_pw_3_sa_9StringMap_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_12_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_word = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_StringMap(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_9StringMap_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_word); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_12_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_12_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o);    } -  (*Py_TYPE(o)->tp_free)(o);  } -static PyMethodDef __pyx_methods_3_sa_StringMap[] = { -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_StringMap = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_StringMap = { -  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 int __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  } +  if (p->__pyx_v_word) { +    e = (*v)(p->__pyx_v_word, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  } +  return 0; +} -static PyMappingMethods __pyx_tp_as_mapping_StringMap = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_word); +  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} -static PyBufferProcs __pyx_tp_as_buffer_StringMap = { -  #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 +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_12_genexpr[] = { +  {0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa_StringMap = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.StringMap"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_StringMap), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_12_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_StringMap, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -68160,24 +68653,24 @@ static PyTypeObject __pyx_type_3_sa_StringMap = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_StringMap, /*tp_as_number*/ -  &__pyx_tp_as_sequence_StringMap, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_StringMap, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_StringMap, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_StringMap, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_12_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -68187,7 +68680,7 @@ static PyTypeObject __pyx_type_3_sa_StringMap = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_StringMap, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -68200,237 +68693,196 @@ static PyTypeObject __pyx_type_3_sa_StringMap = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_DataArray __pyx_vtable_3_sa_DataArray; -static PyObject *__pyx_tp_new_3_sa_DataArray(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_DataArray *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_DataArray *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_DataArray; -  p->word2id = Py_None; Py_INCREF(Py_None); -  p->id2word = Py_None; Py_INCREF(Py_None); -  p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_9DataArray_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_29_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_feat = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_DataArray(PyObject *o) { -  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o; -  Py_XDECREF(p->word2id); -  Py_XDECREF(p->id2word); -  Py_XDECREF(((PyObject *)p->data)); -  Py_XDECREF(((PyObject *)p->sent_id)); -  Py_XDECREF(((PyObject *)p->sent_index)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_feat); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_29_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_29_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa_DataArray(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o; -  if (p->word2id) { -    e = (*v)(p->word2id, a); if (e) return e; -  } -  if (p->id2word) { -    e = (*v)(p->id2word, a); if (e) return e; -  } -  if (p->data) { -    e = (*v)(((PyObject*)p->data), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->sent_id) { -    e = (*v)(((PyObject*)p->sent_id), a); if (e) return e; +  if (p->__pyx_v_feat) { +    e = (*v)(p->__pyx_v_feat, a); if (e) return e;    } -  if (p->sent_index) { -    e = (*v)(((PyObject*)p->sent_index), a); if (e) return e; +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_DataArray(PyObject *o) { -  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->word2id); -  p->word2id = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->id2word); -  p->id2word = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->data); -  p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->sent_id); -  p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_feat); +  p->__pyx_v_feat = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->sent_index); -  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyObject *__pyx_sq_item_3_sa_DataArray(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_3_sa_9DataArray_word2id(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9DataArray_7word2id_1__get__(o); -} -static int __pyx_setprop_3_sa_9DataArray_word2id(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_9DataArray_7word2id_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_9DataArray_7word2id_5__del__(o); -  } -} - -static PyObject *__pyx_getprop_3_sa_9DataArray_id2word(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9DataArray_7id2word_1__get__(o); -} - -static int __pyx_setprop_3_sa_9DataArray_id2word(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_9DataArray_7id2word_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_9DataArray_7id2word_5__del__(o); -  } -} +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_29_genexpr[] = { +  {0, 0, 0, 0} +}; -static PyObject *__pyx_getprop_3_sa_9DataArray_data(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9DataArray_4data_1__get__(o); -} +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_29_genexpr = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_29_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/ +  #if PY_MAJOR_VERSION < 3 +  0, /*tp_compare*/ +  #else +  0, /*reserved*/ +  #endif +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa___pyx_scope_struct_29_genexpr, /*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_3_sa___pyx_scope_struct_29_genexpr, /*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_3_sa_IntList __pyx_vtable_3_sa_IntList; -static int __pyx_setprop_3_sa_9DataArray_data(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_9DataArray_4data_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_9DataArray_4data_5__del__(o); +static PyObject *__pyx_tp_new_3_sa_IntList(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_IntList *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_IntList *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_IntList; +  if (unlikely(__pyx_pw_3_sa_7IntList_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0;    } +  return o;  } -static PyObject *__pyx_getprop_3_sa_9DataArray_sent_id(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9DataArray_7sent_id_1__get__(o); -} - -static int __pyx_setprop_3_sa_9DataArray_sent_id(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_9DataArray_7sent_id_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_9DataArray_7sent_id_5__del__(o); +static void __pyx_tp_dealloc_3_sa_IntList(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_7IntList_15__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_3_sa_9DataArray_sent_index(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9DataArray_10sent_index_1__get__(o); +static PyObject *__pyx_sq_item_3_sa_IntList(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_setprop_3_sa_9DataArray_sent_index(PyObject *o, PyObject *v, void *x) { +static int __pyx_mp_ass_subscript_3_sa_IntList(PyObject *o, PyObject *i, PyObject *v) {    if (v) { -    return __pyx_pw_3_sa_9DataArray_10sent_index_3__set__(o, v); +    return __pyx_pw_3_sa_7IntList_22__setitem__(o, i, v);    }    else { -    return __pyx_pw_3_sa_9DataArray_10sent_index_5__del__(o); +    PyErr_Format(PyExc_NotImplementedError, +      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name); +    return -1;    }  } -static PyMethodDef __pyx_methods_3_sa_DataArray[] = { -  {__Pyx_NAMESTR("get_sentence_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_5get_sentence_id, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_sentence"), (PyCFunction)__pyx_pw_3_sa_9DataArray_7get_sentence, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_9get_id, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_sentence_bounds"), (PyCFunction)__pyx_pw_3_sa_9DataArray_13get_sentence_bounds, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_15write_text, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_17read_text, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_bitext"), (PyCFunction)__pyx_pw_3_sa_9DataArray_19read_bitext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_text_data"), (PyCFunction)__pyx_pw_3_sa_9DataArray_21read_text_data, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_23read_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_25write_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_enhanced_handle"), (PyCFunction)__pyx_pw_3_sa_9DataArray_27write_enhanced_handle, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9DataArray_29write_enhanced, METH_O, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa_IntList[] = { +  {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pw_3_sa_7IntList_5index, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("partition"), (PyCFunction)__pyx_pw_3_sa_7IntList_7partition, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("_doquicksort"), (PyCFunction)__pyx_pw_3_sa_7IntList_9_doquicksort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("sort"), (PyCFunction)__pyx_pw_3_sa_7IntList_11sort, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("reset"), (PyCFunction)__pyx_pw_3_sa_7IntList_13reset, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_size"), (PyCFunction)__pyx_pw_3_sa_7IntList_26get_size, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_7IntList_28append, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pw_3_sa_7IntList_30extend, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_7IntList_32write, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_7IntList_34read, METH_O, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static struct PyGetSetDef __pyx_getsets_3_sa_DataArray[] = { -  {(char *)"word2id", __pyx_getprop_3_sa_9DataArray_word2id, __pyx_setprop_3_sa_9DataArray_word2id, 0, 0}, -  {(char *)"id2word", __pyx_getprop_3_sa_9DataArray_id2word, __pyx_setprop_3_sa_9DataArray_id2word, 0, 0}, -  {(char *)"data", __pyx_getprop_3_sa_9DataArray_data, __pyx_setprop_3_sa_9DataArray_data, 0, 0}, -  {(char *)"sent_id", __pyx_getprop_3_sa_9DataArray_sent_id, __pyx_setprop_3_sa_9DataArray_sent_id, 0, 0}, -  {(char *)"sent_index", __pyx_getprop_3_sa_9DataArray_sent_index, __pyx_setprop_3_sa_9DataArray_sent_index, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_DataArray = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_DataArray = { -  __pyx_pw_3_sa_9DataArray_3__len__, /*sq_length*/ +static PySequenceMethods __pyx_tp_as_sequence_IntList = { +  __pyx_pw_3_sa_7IntList_24__len__, /*sq_length*/    0, /*sq_concat*/    0, /*sq_repeat*/ -  __pyx_sq_item_3_sa_DataArray, /*sq_item*/ +  __pyx_sq_item_3_sa_IntList, /*sq_item*/    0, /*sq_slice*/    0, /*sq_ass_item*/    0, /*sq_ass_slice*/ @@ -68439,39 +68891,18 @@ static PySequenceMethods __pyx_tp_as_sequence_DataArray = {    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping_DataArray = { -  __pyx_pw_3_sa_9DataArray_3__len__, /*mp_length*/ -  __pyx_pw_3_sa_9DataArray_11__getitem__, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_DataArray = { -  #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 +static PyMappingMethods __pyx_tp_as_mapping_IntList = { +  __pyx_pw_3_sa_7IntList_24__len__, /*mp_length*/ +  __pyx_pw_3_sa_7IntList_20__getitem__, /*mp_subscript*/ +  __pyx_mp_ass_subscript_3_sa_IntList, /*mp_ass_subscript*/  }; -static PyTypeObject __pyx_type_3_sa_DataArray = { +static PyTypeObject __pyx_type_3_sa_IntList = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.DataArray"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_DataArray), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.IntList"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_IntList), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_DataArray, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_IntList, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -68481,26 +68912,26 @@ static PyTypeObject __pyx_type_3_sa_DataArray = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_DataArray, /*tp_as_number*/ -  &__pyx_tp_as_sequence_DataArray, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_DataArray, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_IntList, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_IntList, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/ -  0, /*tp_str*/ +  __pyx_pw_3_sa_7IntList_3__str__, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_DataArray, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_DataArray, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_DataArray, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ +  __pyx_pw_3_sa_7IntList_17__iter__, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_DataArray, /*tp_methods*/ +  __pyx_methods_3_sa_IntList, /*tp_methods*/    0, /*tp_members*/ -  __pyx_getsets_3_sa_DataArray, /*tp_getset*/ +  0, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -68508,7 +68939,7 @@ static PyTypeObject __pyx_type_3_sa_DataArray = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_DataArray, /*tp_new*/ +  __pyx_tp_new_3_sa_IntList, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -68521,169 +68952,29 @@ static PyTypeObject __pyx_type_3_sa_DataArray = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_Alignment __pyx_vtable_3_sa_Alignment; -static PyObject *__pyx_tp_new_3_sa_Alignment(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Alignment *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Alignment *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_Alignment; -  p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_9Alignment_5__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; -  } +static PyObject *__pyx_tp_new_3_sa_VEBIterator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_Alignment(PyObject *o) { -  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o; -  Py_XDECREF(((PyObject *)p->links)); -  Py_XDECREF(((PyObject *)p->sent_index)); +static void __pyx_tp_dealloc_3_sa_VEBIterator(PyObject *o) {    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa_Alignment(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o; -  if (p->links) { -    e = (*v)(((PyObject*)p->links), a); if (e) return e; -  } -  if (p->sent_index) { -    e = (*v)(((PyObject*)p->sent_index), a); if (e) return e; -  } -  return 0; -} - -static int __pyx_tp_clear_3_sa_Alignment(PyObject *o) { -  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->links); -  p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->sent_index); -  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyMethodDef __pyx_methods_3_sa_Alignment[] = { -  {__Pyx_NAMESTR("unlink"), (PyCFunction)__pyx_pw_3_sa_9Alignment_1unlink, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_unlink)}, -  {__Pyx_NAMESTR("get_sent_links"), (PyCFunction)__pyx_pw_3_sa_9Alignment_3get_sent_links, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_7read_text, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_9read_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_11write_text, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_13write_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9Alignment_15write_enhanced, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("alignment"), (PyCFunction)__pyx_pw_3_sa_9Alignment_17alignment, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_16alignment)}, +static PyMethodDef __pyx_methods_3_sa_VEBIterator[] = { +  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_11VEBIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_Alignment = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Alignment = { -  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_Alignment = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Alignment = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Alignment = { +static PyTypeObject __pyx_type_3_sa_VEBIterator = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Alignment"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Alignment), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.VEBIterator"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_VEBIterator), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Alignment, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_VEBIterator, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -68693,24 +68984,24 @@ static PyTypeObject __pyx_type_3_sa_Alignment = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_Alignment, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Alignment, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Alignment, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Alignment, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Alignment, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Alignment, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_Alignment, /*tp_methods*/ +  __pyx_pw_3_sa_11VEBIterator_1__next__, /*tp_iternext*/ +  __pyx_methods_3_sa_VEBIterator, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -68720,7 +69011,7 @@ static PyTypeObject __pyx_type_3_sa_Alignment = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Alignment, /*tp_new*/ +  __pyx_tp_new_3_sa_VEBIterator, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -68737,8 +69028,9 @@ static struct __pyx_vtabstruct_3_sa_BiLex __pyx_vtable_3_sa_BiLex;  static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject *k) {    struct __pyx_obj_3_sa_BiLex *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0;    p = ((struct __pyx_obj_3_sa_BiLex *)o);    p->__pyx_vtab = __pyx_vtabptr_3_sa_BiLex;    p->col1 = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None); @@ -68749,7 +69041,7 @@ static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject    p->id2fword = Py_None; Py_INCREF(Py_None);    p->eword2id = Py_None; Py_INCREF(Py_None);    p->fword2id = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_5BiLex_1__cinit__(o, a, k) < 0) { +  if (unlikely(__pyx_pw_3_sa_5BiLex_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o; @@ -68757,14 +69049,15 @@ static PyObject *__pyx_tp_new_3_sa_BiLex(PyTypeObject *t, PyObject *a, PyObject  static void __pyx_tp_dealloc_3_sa_BiLex(PyObject *o) {    struct __pyx_obj_3_sa_BiLex *p = (struct __pyx_obj_3_sa_BiLex *)o; -  Py_XDECREF(((PyObject *)p->col1)); -  Py_XDECREF(((PyObject *)p->col2)); -  Py_XDECREF(((PyObject *)p->f_index)); -  Py_XDECREF(((PyObject *)p->e_index)); -  Py_XDECREF(p->id2eword); -  Py_XDECREF(p->id2fword); -  Py_XDECREF(p->eword2id); -  Py_XDECREF(p->fword2id); +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->col1); +  Py_CLEAR(p->col2); +  Py_CLEAR(p->f_index); +  Py_CLEAR(p->e_index); +  Py_CLEAR(p->id2eword); +  Py_CLEAR(p->id2fword); +  Py_CLEAR(p->eword2id); +  Py_CLEAR(p->fword2id);    (*Py_TYPE(o)->tp_free)(o);  } @@ -68840,104 +69133,6 @@ static PyMethodDef __pyx_methods_3_sa_BiLex[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_BiLex = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_BiLex = { -  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_BiLex = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_BiLex = { -  #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 -}; -  static PyTypeObject __pyx_type_3_sa_BiLex = {    PyVarObject_HEAD_INIT(0, 0)    __Pyx_NAMESTR("_sa.BiLex"), /*tp_name*/ @@ -68953,16 +69148,16 @@ static PyTypeObject __pyx_type_3_sa_BiLex = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_BiLex, /*tp_as_number*/ -  &__pyx_tp_as_sequence_BiLex, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_BiLex, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_BiLex, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/    __pyx_tp_traverse_3_sa_BiLex, /*tp_traverse*/    __pyx_tp_clear_3_sa_BiLex, /*tp_clear*/ @@ -68993,537 +69188,16 @@ static PyTypeObject __pyx_type_3_sa_BiLex = {    0, /*tp_version_tag*/    #endif  }; - -static PyObject *__pyx_tp_new_3_sa_BitSetIterator(PyTypeObject *t, PyObject *a, PyObject *k) { -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  return o; -} - -static void __pyx_tp_dealloc_3_sa_BitSetIterator(PyObject *o) { -  (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_3_sa_BitSetIterator[] = { -  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_14BitSetIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_BitSetIterator = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_BitSetIterator = { -  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_BitSetIterator = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_BitSetIterator = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_BitSetIterator = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.BitSetIterator"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_BitSetIterator), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_BitSetIterator, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_BitSetIterator, /*tp_as_number*/ -  &__pyx_tp_as_sequence_BitSetIterator, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_BitSetIterator, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_BitSetIterator, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -  0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  __pyx_pw_3_sa_14BitSetIterator_1__next__, /*tp_iternext*/ -  __pyx_methods_3_sa_BitSetIterator, /*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_3_sa_BitSetIterator, /*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_3_sa_BitSet(PyTypeObject *t, PyObject *a, PyObject *k) { -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  if (__pyx_pw_3_sa_6BitSet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) { -    Py_DECREF(o); o = 0; -  } -  return o; -} - -static void __pyx_tp_dealloc_3_sa_BitSet(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_6BitSet_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); -  } -  (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_3_sa_BitSet[] = { -  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_6BitSet_7insert, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("findsucc"), (PyCFunction)__pyx_pw_3_sa_6BitSet_9findsucc, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("min"), (PyCFunction)__pyx_pw_3_sa_6BitSet_13min, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("max"), (PyCFunction)__pyx_pw_3_sa_6BitSet_15max, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_BitSet = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_BitSet = { -  __pyx_pw_3_sa_6BitSet_17__len__, /*sq_length*/ -  0, /*sq_concat*/ -  0, /*sq_repeat*/ -  0, /*sq_item*/ -  0, /*sq_slice*/ -  0, /*sq_ass_item*/ -  0, /*sq_ass_slice*/ -  __pyx_pw_3_sa_6BitSet_19__contains__, /*sq_contains*/ -  0, /*sq_inplace_concat*/ -  0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_BitSet = { -  __pyx_pw_3_sa_6BitSet_17__len__, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_BitSet = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_BitSet = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.BitSet"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_BitSet), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_BitSet, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_BitSet, /*tp_as_number*/ -  &__pyx_tp_as_sequence_BitSet, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_BitSet, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  __pyx_pw_3_sa_6BitSet_11__str__, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_BitSet, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -  0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  __pyx_pw_3_sa_6BitSet_5__iter__, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_BitSet, /*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_3_sa_BitSet, /*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_3_sa_VEBIterator(PyTypeObject *t, PyObject *a, PyObject *k) { -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  return o; -} - -static void __pyx_tp_dealloc_3_sa_VEBIterator(PyObject *o) { -  (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_3_sa_VEBIterator[] = { -  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_11VEBIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_VEBIterator = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_VEBIterator = { -  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_VEBIterator = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_VEBIterator = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_VEBIterator = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.VEBIterator"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_VEBIterator), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_VEBIterator, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_VEBIterator, /*tp_as_number*/ -  &__pyx_tp_as_sequence_VEBIterator, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_VEBIterator, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_VEBIterator, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ -  0, /*tp_doc*/ -  0, /*tp_traverse*/ -  0, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  __pyx_pw_3_sa_11VEBIterator_1__next__, /*tp_iternext*/ -  __pyx_methods_3_sa_VEBIterator, /*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_3_sa_VEBIterator, /*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_3_sa_VEB __pyx_vtable_3_sa_VEB;  static PyObject *__pyx_tp_new_3_sa_VEB(PyTypeObject *t, PyObject *a, PyObject *k) {    struct __pyx_obj_3_sa_VEB *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0;    p = ((struct __pyx_obj_3_sa_VEB *)o);    p->__pyx_vtab = __pyx_vtabptr_3_sa_VEB; -  if (__pyx_pw_3_sa_3VEB_1__cinit__(o, a, k) < 0) { +  if (unlikely(__pyx_pw_3_sa_3VEB_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o; @@ -69548,64 +69222,6 @@ static PyMethodDef __pyx_methods_3_sa_VEB[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_VEB = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; -  static PySequenceMethods __pyx_tp_as_sequence_VEB = {    __pyx_pw_3_sa_3VEB_11__len__, /*sq_length*/    0, /*sq_concat*/ @@ -69625,27 +69241,6 @@ static PyMappingMethods __pyx_tp_as_mapping_VEB = {    0, /*mp_ass_subscript*/  }; -static PyBufferProcs __pyx_tp_as_buffer_VEB = { -  #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 -}; -  static PyTypeObject __pyx_type_3_sa_VEB = {    PyVarObject_HEAD_INIT(0, 0)    __Pyx_NAMESTR("_sa.VEB"), /*tp_name*/ @@ -69661,7 +69256,7 @@ static PyTypeObject __pyx_type_3_sa_VEB = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_VEB, /*tp_as_number*/ +  0, /*tp_as_number*/    &__pyx_tp_as_sequence_VEB, /*tp_as_sequence*/    &__pyx_tp_as_mapping_VEB, /*tp_as_mapping*/    0, /*tp_hash*/ @@ -69669,8 +69264,8 @@ static PyTypeObject __pyx_type_3_sa_VEB = {    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_VEB, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/    0, /*tp_traverse*/    0, /*tp_clear*/ @@ -69702,788 +69297,65 @@ static PyTypeObject __pyx_type_3_sa_VEB = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa_LCP(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_LCP *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_LCP *)o); -  p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); -  p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_3LCP_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; -  } -  return o; -} - -static void __pyx_tp_dealloc_3_sa_LCP(PyObject *o) { -  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o; -  Py_XDECREF(((PyObject *)p->sa)); -  Py_XDECREF(((PyObject *)p->lcp)); -  (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_3_sa_LCP(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o; -  if (p->sa) { -    e = (*v)(((PyObject*)p->sa), a); if (e) return e; -  } -  if (p->lcp) { -    e = (*v)(((PyObject*)p->lcp), a); if (e) return e; -  } -  return 0; -} - -static int __pyx_tp_clear_3_sa_LCP(PyObject *o) { -  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->sa); -  p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->lcp); -  p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyMethodDef __pyx_methods_3_sa_LCP[] = { -  {__Pyx_NAMESTR("compute_stats"), (PyCFunction)__pyx_pw_3_sa_3LCP_3compute_stats, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_3LCP_2compute_stats)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_LCP = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_LCP = { -  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_LCP = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_LCP = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_LCP = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.LCP"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_LCP), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_LCP, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_LCP, /*tp_as_number*/ -  &__pyx_tp_as_sequence_LCP, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_LCP, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_LCP, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_LCP, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_LCP, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_LCP, /*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_3_sa_LCP, /*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_3_sa_Alphabet __pyx_vtable_3_sa_Alphabet; - -static PyObject *__pyx_tp_new_3_sa_Alphabet(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Alphabet *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Alphabet *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_Alphabet; -  p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); -  p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); -  p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_8Alphabet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) { -    Py_DECREF(o); o = 0; -  } -  return o; -} - -static void __pyx_tp_dealloc_3_sa_Alphabet(PyObject *o) { -  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o; -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_8Alphabet_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); -  } -  Py_XDECREF(((PyObject *)p->terminals)); -  Py_XDECREF(((PyObject *)p->nonterminals)); -  Py_XDECREF(((PyObject *)p->id2sym)); -  (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_3_sa_Alphabet(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o; -  if (p->terminals) { -    e = (*v)(((PyObject*)p->terminals), a); if (e) return e; -  } -  if (p->nonterminals) { -    e = (*v)(((PyObject*)p->nonterminals), a); if (e) return e; -  } -  if (p->id2sym) { -    e = (*v)(p->id2sym, a); if (e) return e; -  } -  return 0; -} - -static int __pyx_tp_clear_3_sa_Alphabet(PyObject *o) { -  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->terminals); -  p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->nonterminals); -  p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->id2sym); -  p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyObject *__pyx_getprop_3_sa_8Alphabet_terminals(PyObject *o, void *x) { -  return __pyx_pw_3_sa_8Alphabet_9terminals_1__get__(o); -} - -static PyObject *__pyx_getprop_3_sa_8Alphabet_nonterminals(PyObject *o, void *x) { -  return __pyx_pw_3_sa_8Alphabet_12nonterminals_1__get__(o); -} - -static PyMethodDef __pyx_methods_3_sa_Alphabet[] = { -  {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_3_sa_Alphabet[] = { -  {(char *)"terminals", __pyx_getprop_3_sa_8Alphabet_terminals, 0, 0, 0}, -  {(char *)"nonterminals", __pyx_getprop_3_sa_8Alphabet_nonterminals, 0, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Alphabet = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Alphabet = { -  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_Alphabet = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Alphabet = { -  #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 -}; +static struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *__pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_11_encode_words = 0; -static PyTypeObject __pyx_type_3_sa_Alphabet = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Alphabet"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Alphabet), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Alphabet, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_Alphabet, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Alphabet, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Alphabet, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Alphabet, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Alphabet, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Alphabet, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_Alphabet, /*tp_methods*/ -  0, /*tp_members*/ -  __pyx_getsets_3_sa_Alphabet, /*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_3_sa_Alphabet, /*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_3_sa_TrieMap __pyx_vtable_3_sa_TrieMap; - -static PyObject *__pyx_tp_new_3_sa_TrieMap(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_TrieMap *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_TrieMap *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_TrieMap; -  if (__pyx_pw_3_sa_7TrieMap_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[--__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o); +  p->__pyx_v_words = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_TrieMap(PyObject *o) { -  { -    PyObject *etype, *eval, *etb; -    PyErr_Fetch(&etype, &eval, &etb); -    ++Py_REFCNT(o); -    __pyx_pw_3_sa_7TrieMap_3__dealloc__(o); -    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); -    --Py_REFCNT(o); -    PyErr_Restore(etype, eval, etb); -  } -  (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_3_sa_TrieMap[] = { -  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_5insert, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("contains"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_7contains, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("toMap"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_9toMap, METH_O, __Pyx_DOCSTR(0)}, -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_TrieMap = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_TrieMap = { -  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_TrieMap = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_TrieMap = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_TrieMap = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.TrieMap"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_TrieMap), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_TrieMap, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_TrieMap, /*tp_as_number*/ -  &__pyx_tp_as_sequence_TrieMap, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_TrieMap, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_TrieMap, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*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_3_sa_TrieMap, /*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_3_sa_TrieMap, /*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_3_sa_Precomputation __pyx_vtable_3_sa_Precomputation; - -static PyObject *__pyx_tp_new_3_sa_Precomputation(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Precomputation *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Precomputation *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_Precomputation; -  p->precomputed_index = Py_None; Py_INCREF(Py_None); -  p->precomputed_collocations = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_14Precomputation_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_words); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words))) { +    __pyx_freelist_3_sa___pyx_scope_struct_11_encode_words[__pyx_freecount_3_sa___pyx_scope_struct_11_encode_words++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o);    } -  return o;  } -static void __pyx_tp_dealloc_3_sa_Precomputation(PyObject *o) { -  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o; -  Py_XDECREF(p->precomputed_index); -  Py_XDECREF(p->precomputed_collocations); -  (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_3_sa_Precomputation(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o; -  if (p->precomputed_index) { -    e = (*v)(p->precomputed_index, a); if (e) return e; -  } -  if (p->precomputed_collocations) { -    e = (*v)(p->precomputed_collocations, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o; +  if (p->__pyx_v_words) { +    e = (*v)(p->__pyx_v_words, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_Precomputation(PyObject *o) { -  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->precomputed_index); -  p->precomputed_index = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->precomputed_collocations); -  p->precomputed_collocations = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_words); +  p->__pyx_v_words = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa_Precomputation[] = { -  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_3read_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_5write_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_7precompute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_11_encode_words[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_Precomputation = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Precomputation = { -  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_Precomputation = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Precomputation = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Precomputation = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Precomputation"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Precomputation), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_11_encode_words"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Precomputation, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -70493,24 +69365,24 @@ static PyTypeObject __pyx_type_3_sa_Precomputation = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_Precomputation, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Precomputation, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Precomputation, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Precomputation, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Precomputation, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Precomputation, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_Precomputation, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_11_encode_words, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -70520,7 +69392,7 @@ static PyTypeObject __pyx_type_3_sa_Precomputation = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Precomputation, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -70533,183 +69405,64 @@ static PyTypeObject __pyx_type_3_sa_Precomputation = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_SuffixArray __pyx_vtable_3_sa_SuffixArray; -static PyObject *__pyx_tp_new_3_sa_SuffixArray(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_SuffixArray *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_SuffixArray *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_SuffixArray; -  p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_11SuffixArray_1__cinit__(o, a, k) < 0) { +static PyObject *__pyx_tp_new_3_sa_LCP(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_LCP *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_LCP *)o); +  p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); +  p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_3LCP_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o;  } -static void __pyx_tp_dealloc_3_sa_SuffixArray(PyObject *o) { -  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o; -  Py_XDECREF(((PyObject *)p->darray)); -  Py_XDECREF(((PyObject *)p->sa)); -  Py_XDECREF(((PyObject *)p->ha)); +static void __pyx_tp_dealloc_3_sa_LCP(PyObject *o) { +  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->sa); +  Py_CLEAR(p->lcp);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa_SuffixArray(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_LCP(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o; -  if (p->darray) { -    e = (*v)(((PyObject*)p->darray), a); if (e) return e; -  } +  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o;    if (p->sa) {      e = (*v)(((PyObject*)p->sa), a); if (e) return e;    } -  if (p->ha) { -    e = (*v)(((PyObject*)p->ha), a); if (e) return e; +  if (p->lcp) { +    e = (*v)(((PyObject*)p->lcp), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_SuffixArray(PyObject *o) { -  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o; +static int __pyx_tp_clear_3_sa_LCP(PyObject *o) { +  struct __pyx_obj_3_sa_LCP *p = (struct __pyx_obj_3_sa_LCP *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->darray); -  p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp);    tmp = ((PyObject*)p->sa); -  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->sa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->ha); -  p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->lcp); +  p->lcp = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyObject *__pyx_sq_item_3_sa_SuffixArray(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 PyMethodDef __pyx_methods_3_sa_SuffixArray[] = { -  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_5read_text, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_4read_text)}, -  {__Pyx_NAMESTR("q3sort"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_7q3sort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_6q3sort)}, -  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_9write_text, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_11read_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_13write_binary, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_15write_enhanced, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("lookup"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_17lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa_LCP[] = { +  {__Pyx_NAMESTR("compute_stats"), (PyCFunction)__pyx_pw_3_sa_3LCP_3compute_stats, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_3LCP_2compute_stats)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_SuffixArray = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_SuffixArray = { -  0, /*sq_length*/ -  0, /*sq_concat*/ -  0, /*sq_repeat*/ -  __pyx_sq_item_3_sa_SuffixArray, /*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_SuffixArray = { -  0, /*mp_length*/ -  __pyx_pw_3_sa_11SuffixArray_3__getitem__, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_SuffixArray = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_SuffixArray = { +static PyTypeObject __pyx_type_3_sa_LCP = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.SuffixArray"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_SuffixArray), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.LCP"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_LCP), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_SuffixArray, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_LCP, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -70719,24 +69472,24 @@ static PyTypeObject __pyx_type_3_sa_SuffixArray = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_SuffixArray, /*tp_as_number*/ -  &__pyx_tp_as_sequence_SuffixArray, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_SuffixArray, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_SuffixArray, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_SuffixArray, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_SuffixArray, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_LCP, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_LCP, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_SuffixArray, /*tp_methods*/ +  __pyx_methods_3_sa_LCP, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -70746,7 +69499,7 @@ static PyTypeObject __pyx_type_3_sa_SuffixArray = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_SuffixArray, /*tp_new*/ +  __pyx_tp_new_3_sa_LCP, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -70759,628 +69512,181 @@ static PyTypeObject __pyx_type_3_sa_SuffixArray = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_DataArray __pyx_vtable_3_sa_DataArray; -static PyObject *__pyx_tp_new_3_sa_TrieNode(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_TrieNode *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_TrieNode *)o); -  p->children = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_8TrieNode_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) { +static PyObject *__pyx_tp_new_3_sa_DataArray(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_DataArray *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_DataArray *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_DataArray; +  p->word2id = Py_None; Py_INCREF(Py_None); +  p->id2word = Py_None; Py_INCREF(Py_None); +  p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_9DataArray_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o;  } -static void __pyx_tp_dealloc_3_sa_TrieNode(PyObject *o) { -  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; -  Py_XDECREF(p->children); +static void __pyx_tp_dealloc_3_sa_DataArray(PyObject *o) { +  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->word2id); +  Py_CLEAR(p->id2word); +  Py_CLEAR(p->data); +  Py_CLEAR(p->sent_id); +  Py_CLEAR(p->sent_index);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa_TrieNode(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_DataArray(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; -  if (p->children) { -    e = (*v)(p->children, a); if (e) return e; -  } -  return 0; -} - -static int __pyx_tp_clear_3_sa_TrieNode(PyObject *o) { -  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->children); -  p->children = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyObject *__pyx_getprop_3_sa_8TrieNode_children(PyObject *o, void *x) { -  return __pyx_pw_3_sa_8TrieNode_8children_1__get__(o); -} - -static int __pyx_setprop_3_sa_8TrieNode_children(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_8TrieNode_8children_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_8TrieNode_8children_5__del__(o); +  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o; +  if (p->word2id) { +    e = (*v)(p->word2id, a); if (e) return e;    } -} - -static PyMethodDef __pyx_methods_3_sa_TrieNode[] = { -  {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_3_sa_TrieNode[] = { -  {(char *)"children", __pyx_getprop_3_sa_8TrieNode_children, __pyx_setprop_3_sa_8TrieNode_children, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_TrieNode = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_TrieNode = { -  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_TrieNode = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_TrieNode = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_TrieNode = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.TrieNode"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_TrieNode), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_TrieNode, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_TrieNode, /*tp_as_number*/ -  &__pyx_tp_as_sequence_TrieNode, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_TrieNode, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_TrieNode, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_TrieNode, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_TrieNode, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_TrieNode, /*tp_methods*/ -  0, /*tp_members*/ -  __pyx_getsets_3_sa_TrieNode, /*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_3_sa_TrieNode, /*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_3_sa_ExtendedTrieNode(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_ExtendedTrieNode *p; -  PyObject *o = __pyx_tp_new_3_sa_TrieNode(t, a, k); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_ExtendedTrieNode *)o); -  p->phrase = Py_None; Py_INCREF(Py_None); -  p->phrase_location = Py_None; Py_INCREF(Py_None); -  p->suffix_link = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +  if (p->id2word) { +    e = (*v)(p->id2word, a); if (e) return e;    } -  return o; -} - -static void __pyx_tp_dealloc_3_sa_ExtendedTrieNode(PyObject *o) { -  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o; -  Py_XDECREF(p->phrase); -  Py_XDECREF(p->phrase_location); -  Py_XDECREF(p->suffix_link); -  __pyx_tp_dealloc_3_sa_TrieNode(o); -} - -static int __pyx_tp_traverse_3_sa_ExtendedTrieNode(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o; -  e = __pyx_tp_traverse_3_sa_TrieNode(o, v, a); if (e) return e; -  if (p->phrase) { -    e = (*v)(p->phrase, a); if (e) return e; +  if (p->data) { +    e = (*v)(((PyObject*)p->data), a); if (e) return e;    } -  if (p->phrase_location) { -    e = (*v)(p->phrase_location, a); if (e) return e; +  if (p->sent_id) { +    e = (*v)(((PyObject*)p->sent_id), a); if (e) return e;    } -  if (p->suffix_link) { -    e = (*v)(p->suffix_link, a); if (e) return e; +  if (p->sent_index) { +    e = (*v)(((PyObject*)p->sent_index), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_ExtendedTrieNode(PyObject *o) { -  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o; +static int __pyx_tp_clear_3_sa_DataArray(PyObject *o) { +  struct __pyx_obj_3_sa_DataArray *p = (struct __pyx_obj_3_sa_DataArray *)o;    PyObject* tmp; -  __pyx_tp_clear_3_sa_TrieNode(o); -  tmp = ((PyObject*)p->phrase); -  p->phrase = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->word2id); +  p->word2id = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->phrase_location); -  p->phrase_location = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->id2word); +  p->id2word = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->suffix_link); -  p->suffix_link = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->data); +  p->data = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->sent_id); +  p->sent_id = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->sent_index); +  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } - -static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, void *x) { -  return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(o); -} - -static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, PyObject *v, void *x) { -  if (v) { -    return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_3__set__(o, v); -  } -  else { -    return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_5__del__(o); -  } +static PyObject *__pyx_sq_item_3_sa_DataArray(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_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, void *x) { -  return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(o); +static PyObject *__pyx_getprop_3_sa_9DataArray_word2id(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9DataArray_7word2id_1__get__(o);  } -static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, PyObject *v, void *x) { +static int __pyx_setprop_3_sa_9DataArray_word2id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {    if (v) { -    return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_3__set__(o, v); +    return __pyx_pw_3_sa_9DataArray_7word2id_3__set__(o, v);    }    else { -    return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_5__del__(o); +    return __pyx_pw_3_sa_9DataArray_7word2id_5__del__(o);    }  } -static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, void *x) { -  return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(o); +static PyObject *__pyx_getprop_3_sa_9DataArray_id2word(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9DataArray_7id2word_1__get__(o);  } -static int __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, PyObject *v, void *x) { +static int __pyx_setprop_3_sa_9DataArray_id2word(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {    if (v) { -    return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_3__set__(o, v); +    return __pyx_pw_3_sa_9DataArray_7id2word_3__set__(o, v);    }    else { -    return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_5__del__(o); -  } -} - -static PyMethodDef __pyx_methods_3_sa_ExtendedTrieNode[] = { -  {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_3_sa_ExtendedTrieNode[] = { -  {(char *)"phrase", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase, 0, 0}, -  {(char *)"phrase_location", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase_location, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location, 0, 0}, -  {(char *)"suffix_link", __pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link, __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link, 0, 0}, -  {0, 0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_ExtendedTrieNode = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_ExtendedTrieNode = { -  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_ExtendedTrieNode = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_ExtendedTrieNode = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_ExtendedTrieNode = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.ExtendedTrieNode"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_ExtendedTrieNode), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_ExtendedTrieNode, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_ExtendedTrieNode, /*tp_as_number*/ -  &__pyx_tp_as_sequence_ExtendedTrieNode, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_ExtendedTrieNode, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_ExtendedTrieNode, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_ExtendedTrieNode, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_ExtendedTrieNode, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_ExtendedTrieNode, /*tp_methods*/ -  0, /*tp_members*/ -  __pyx_getsets_3_sa_ExtendedTrieNode, /*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_3_sa_ExtendedTrieNode, /*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_3_sa_TrieTable(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_TrieTable *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_TrieTable *)o); -  p->root = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_9TrieTable_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; -  } -  return o; -} - -static void __pyx_tp_dealloc_3_sa_TrieTable(PyObject *o) { -  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; -  Py_XDECREF(p->root); -  (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_3_sa_TrieTable(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; -  if (p->root) { -    e = (*v)(p->root, a); if (e) return e; +    return __pyx_pw_3_sa_9DataArray_7id2word_5__del__(o);    } -  return 0;  } -static int __pyx_tp_clear_3_sa_TrieTable(PyObject *o) { -  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->root); -  p->root = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyObject *__pyx_getprop_3_sa_9TrieTable_extended(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9TrieTable_8extended_1__get__(o); +static PyObject *__pyx_getprop_3_sa_9DataArray_data(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9DataArray_4data_1__get__(o);  } -static int __pyx_setprop_3_sa_9TrieTable_extended(PyObject *o, PyObject *v, void *x) { +static int __pyx_setprop_3_sa_9DataArray_data(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {    if (v) { -    return __pyx_pw_3_sa_9TrieTable_8extended_3__set__(o, v); +    return __pyx_pw_3_sa_9DataArray_4data_3__set__(o, v);    }    else { -    PyErr_SetString(PyExc_NotImplementedError, "__del__"); -    return -1; +    return __pyx_pw_3_sa_9DataArray_4data_5__del__(o);    }  } -static PyObject *__pyx_getprop_3_sa_9TrieTable_count(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9TrieTable_5count_1__get__(o); +static PyObject *__pyx_getprop_3_sa_9DataArray_sent_id(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9DataArray_7sent_id_1__get__(o);  } -static int __pyx_setprop_3_sa_9TrieTable_count(PyObject *o, PyObject *v, void *x) { +static int __pyx_setprop_3_sa_9DataArray_sent_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {    if (v) { -    return __pyx_pw_3_sa_9TrieTable_5count_3__set__(o, v); +    return __pyx_pw_3_sa_9DataArray_7sent_id_3__set__(o, v);    }    else { -    PyErr_SetString(PyExc_NotImplementedError, "__del__"); -    return -1; +    return __pyx_pw_3_sa_9DataArray_7sent_id_5__del__(o);    }  } -static PyObject *__pyx_getprop_3_sa_9TrieTable_root(PyObject *o, void *x) { -  return __pyx_pw_3_sa_9TrieTable_4root_1__get__(o); +static PyObject *__pyx_getprop_3_sa_9DataArray_sent_index(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9DataArray_10sent_index_1__get__(o);  } -static int __pyx_setprop_3_sa_9TrieTable_root(PyObject *o, PyObject *v, void *x) { +static int __pyx_setprop_3_sa_9DataArray_sent_index(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {    if (v) { -    return __pyx_pw_3_sa_9TrieTable_4root_3__set__(o, v); +    return __pyx_pw_3_sa_9DataArray_10sent_index_3__set__(o, v);    }    else { -    return __pyx_pw_3_sa_9TrieTable_4root_5__del__(o); +    return __pyx_pw_3_sa_9DataArray_10sent_index_5__del__(o);    }  } -static PyMethodDef __pyx_methods_3_sa_TrieTable[] = { +static PyMethodDef __pyx_methods_3_sa_DataArray[] = { +  {__Pyx_NAMESTR("get_sentence_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_5get_sentence_id, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_sentence"), (PyCFunction)__pyx_pw_3_sa_9DataArray_7get_sentence, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_id"), (PyCFunction)__pyx_pw_3_sa_9DataArray_9get_id, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("get_sentence_bounds"), (PyCFunction)__pyx_pw_3_sa_9DataArray_13get_sentence_bounds, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_15write_text, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9DataArray_17read_text, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_bitext"), (PyCFunction)__pyx_pw_3_sa_9DataArray_19read_bitext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_text_data"), (PyCFunction)__pyx_pw_3_sa_9DataArray_21read_text_data, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_23read_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9DataArray_25write_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_enhanced_handle"), (PyCFunction)__pyx_pw_3_sa_9DataArray_27write_enhanced_handle, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9DataArray_29write_enhanced, METH_O, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static struct PyGetSetDef __pyx_getsets_3_sa_TrieTable[] = { -  {(char *)"extended", __pyx_getprop_3_sa_9TrieTable_extended, __pyx_setprop_3_sa_9TrieTable_extended, 0, 0}, -  {(char *)"count", __pyx_getprop_3_sa_9TrieTable_count, __pyx_setprop_3_sa_9TrieTable_count, 0, 0}, -  {(char *)"root", __pyx_getprop_3_sa_9TrieTable_root, __pyx_setprop_3_sa_9TrieTable_root, 0, 0}, +static struct PyGetSetDef __pyx_getsets_3_sa_DataArray[] = { +  {(char *)"word2id", __pyx_getprop_3_sa_9DataArray_word2id, __pyx_setprop_3_sa_9DataArray_word2id, 0, 0}, +  {(char *)"id2word", __pyx_getprop_3_sa_9DataArray_id2word, __pyx_setprop_3_sa_9DataArray_id2word, 0, 0}, +  {(char *)"data", __pyx_getprop_3_sa_9DataArray_data, __pyx_setprop_3_sa_9DataArray_data, 0, 0}, +  {(char *)"sent_id", __pyx_getprop_3_sa_9DataArray_sent_id, __pyx_setprop_3_sa_9DataArray_sent_id, 0, 0}, +  {(char *)"sent_index", __pyx_getprop_3_sa_9DataArray_sent_index, __pyx_setprop_3_sa_9DataArray_sent_index, 0, 0},    {0, 0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_TrieTable = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_TrieTable = { -  0, /*sq_length*/ +static PySequenceMethods __pyx_tp_as_sequence_DataArray = { +  __pyx_pw_3_sa_9DataArray_3__len__, /*sq_length*/    0, /*sq_concat*/    0, /*sq_repeat*/ -  0, /*sq_item*/ +  __pyx_sq_item_3_sa_DataArray, /*sq_item*/    0, /*sq_slice*/    0, /*sq_ass_item*/    0, /*sq_ass_slice*/ @@ -71389,39 +69695,18 @@ static PySequenceMethods __pyx_tp_as_sequence_TrieTable = {    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping_TrieTable = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ +static PyMappingMethods __pyx_tp_as_mapping_DataArray = { +  __pyx_pw_3_sa_9DataArray_3__len__, /*mp_length*/ +  __pyx_pw_3_sa_9DataArray_11__getitem__, /*mp_subscript*/    0, /*mp_ass_subscript*/  }; -static PyBufferProcs __pyx_tp_as_buffer_TrieTable = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_TrieTable = { +static PyTypeObject __pyx_type_3_sa_DataArray = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.TrieTable"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_TrieTable), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.DataArray"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_DataArray), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_TrieTable, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_DataArray, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -71431,26 +69716,26 @@ static PyTypeObject __pyx_type_3_sa_TrieTable = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_TrieTable, /*tp_as_number*/ -  &__pyx_tp_as_sequence_TrieTable, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_TrieTable, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_DataArray, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_DataArray, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_TrieTable, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_TrieTable, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_TrieTable, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_DataArray, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_DataArray, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_TrieTable, /*tp_methods*/ +  __pyx_methods_3_sa_DataArray, /*tp_methods*/    0, /*tp_members*/ -  __pyx_getsets_3_sa_TrieTable, /*tp_getset*/ +  __pyx_getsets_3_sa_DataArray, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -71458,7 +69743,7 @@ static PyTypeObject __pyx_type_3_sa_TrieTable = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_TrieTable, /*tp_new*/ +  __pyx_tp_new_3_sa_DataArray, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -71471,153 +69756,29 @@ static PyTypeObject __pyx_type_3_sa_TrieTable = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_PhraseLocation __pyx_vtable_3_sa_PhraseLocation; -static PyObject *__pyx_tp_new_3_sa_PhraseLocation(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_PhraseLocation *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_PhraseLocation *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_PhraseLocation; -  p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_14PhraseLocation_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; -  } +static PyObject *__pyx_tp_new_3_sa_BitSetIterator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_PhraseLocation(PyObject *o) { -  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o; -  Py_XDECREF(((PyObject *)p->arr)); +static void __pyx_tp_dealloc_3_sa_BitSetIterator(PyObject *o) {    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa_PhraseLocation(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o; -  if (p->arr) { -    e = (*v)(((PyObject*)p->arr), a); if (e) return e; -  } -  return 0; -} - -static int __pyx_tp_clear_3_sa_PhraseLocation(PyObject *o) { -  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->arr); -  p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyMethodDef __pyx_methods_3_sa_PhraseLocation[] = { +static PyMethodDef __pyx_methods_3_sa_BitSetIterator[] = { +  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_3_sa_14BitSetIterator_1__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_PhraseLocation = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_PhraseLocation = { -  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_PhraseLocation = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_PhraseLocation = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_PhraseLocation = { +static PyTypeObject __pyx_type_3_sa_BitSetIterator = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.PhraseLocation"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_PhraseLocation), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.BitSetIterator"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_BitSetIterator), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_PhraseLocation, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_BitSetIterator, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -71627,24 +69788,24 @@ static PyTypeObject __pyx_type_3_sa_PhraseLocation = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_PhraseLocation, /*tp_as_number*/ -  &__pyx_tp_as_sequence_PhraseLocation, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_PhraseLocation, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_PhraseLocation, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_PhraseLocation, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_PhraseLocation, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_PhraseLocation, /*tp_methods*/ +  __pyx_pw_3_sa_14BitSetIterator_1__next__, /*tp_iternext*/ +  __pyx_methods_3_sa_BitSetIterator, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -71654,7 +69815,7 @@ static PyTypeObject __pyx_type_3_sa_PhraseLocation = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_PhraseLocation, /*tp_new*/ +  __pyx_tp_new_3_sa_BitSetIterator, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -71668,151 +69829,89 @@ static PyTypeObject __pyx_type_3_sa_PhraseLocation = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa_Sampler(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Sampler *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Sampler *)o); -  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_7Sampler_1__cinit__(o, a, k) < 0) { -    Py_DECREF(o); o = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_23_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_i = 0; +  p->__pyx_v_j = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa_Sampler(PyObject *o) { -  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o; -  Py_XDECREF(((PyObject *)p->sa)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_i); +  Py_CLEAR(p->__pyx_v_j); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_23_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_23_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa_Sampler(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o; -  if (p->sa) { -    e = (*v)(((PyObject*)p->sa), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  } +  if (p->__pyx_v_i) { +    e = (*v)(p->__pyx_v_i, a); if (e) return e; +  } +  if (p->__pyx_v_j) { +    e = (*v)(p->__pyx_v_j, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa_Sampler(PyObject *o) { -  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->sa); -  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_i); +  p->__pyx_v_i = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_j); +  p->__pyx_v_j = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa_Sampler[] = { -  {__Pyx_NAMESTR("sample"), (PyCFunction)__pyx_pw_3_sa_7Sampler_3sample, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_7Sampler_2sample)}, +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_23_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_Sampler = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Sampler = { -  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_Sampler = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Sampler = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Sampler = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Sampler"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Sampler), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_23_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Sampler, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -71822,24 +69921,24 @@ static PyTypeObject __pyx_type_3_sa_Sampler = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_Sampler, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Sampler, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Sampler, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Sampler, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  __Pyx_DOCSTR("A Sampler implements a logic for choosing\n    samples from a population range"), /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Sampler, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Sampler, /*tp_clear*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_Sampler, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_23_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -71849,7 +69948,7 @@ static PyTypeObject __pyx_type_3_sa_Sampler = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Sampler, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -71862,355 +69961,68 @@ static PyTypeObject __pyx_type_3_sa_Sampler = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_HieroCachingRuleFactory __pyx_vtable_3_sa_HieroCachingRuleFactory; +static struct __pyx_vtabstruct_3_sa_Precomputation __pyx_vtable_3_sa_Precomputation; -static PyObject *__pyx_tp_new_3_sa_HieroCachingRuleFactory(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_HieroCachingRuleFactory; -  p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None); -  p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None); -  p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None); +static PyObject *__pyx_tp_new_3_sa_Precomputation(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_Precomputation *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Precomputation *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_Precomputation;    p->precomputed_index = Py_None; Py_INCREF(Py_None);    p->precomputed_collocations = Py_None; Py_INCREF(Py_None); -  p->precompute_file = Py_None; Py_INCREF(Py_None); -  p->max_rank = Py_None; Py_INCREF(Py_None); -  p->prev_norm_prefix = Py_None; Py_INCREF(Py_None); -  p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); -  p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None); -  p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  p->samples_f = Py_None; Py_INCREF(Py_None); -  p->phrases_f = Py_None; Py_INCREF(Py_None); -  p->phrases_e = Py_None; Py_INCREF(Py_None); -  p->phrases_fe = Py_None; Py_INCREF(Py_None); -  p->phrases_al = Py_None; Py_INCREF(Py_None); -  p->bilex_f = Py_None; Py_INCREF(Py_None); -  p->bilex_e = Py_None; Py_INCREF(Py_None); -  p->bilex_fe = Py_None; Py_INCREF(Py_None); -  if (__pyx_pw_3_sa_23HieroCachingRuleFactory_1__cinit__(o, a, k) < 0) { +  if (unlikely(__pyx_pw_3_sa_14Precomputation_1__cinit__(o, a, k) < 0)) {      Py_DECREF(o); o = 0;    }    return o;  } -static void __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory(PyObject *o) { -  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; -  Py_XDECREF(((PyObject *)p->rules)); -  Py_XDECREF(((PyObject *)p->sampler)); -  Py_XDECREF(((PyObject *)p->scorer)); -  Py_XDECREF(p->precomputed_index); -  Py_XDECREF(p->precomputed_collocations); -  Py_XDECREF(p->precompute_file); -  Py_XDECREF(p->max_rank); -  Py_XDECREF(p->prev_norm_prefix); -  Py_XDECREF(((PyObject *)p->fsa)); -  Py_XDECREF(((PyObject *)p->fda)); -  Py_XDECREF(((PyObject *)p->eda)); -  Py_XDECREF(((PyObject *)p->alignment)); -  Py_XDECREF(((PyObject *)p->eid2symid)); -  Py_XDECREF(((PyObject *)p->fid2symid)); -  Py_XDECREF(((PyObject *)p->findexes)); -  Py_XDECREF(((PyObject *)p->findexes1)); -  Py_XDECREF(p->samples_f); -  Py_XDECREF(p->phrases_f); -  Py_XDECREF(p->phrases_e); -  Py_XDECREF(p->phrases_fe); -  Py_XDECREF(p->phrases_al); -  Py_XDECREF(p->bilex_f); -  Py_XDECREF(p->bilex_e); -  Py_XDECREF(p->bilex_fe); +static void __pyx_tp_dealloc_3_sa_Precomputation(PyObject *o) { +  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->precomputed_index); +  Py_CLEAR(p->precomputed_collocations);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa_HieroCachingRuleFactory(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Precomputation(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; -  if (p->rules) { -    e = (*v)(((PyObject*)p->rules), a); if (e) return e; -  } -  if (p->sampler) { -    e = (*v)(((PyObject*)p->sampler), a); if (e) return e; -  } -  if (p->scorer) { -    e = (*v)(((PyObject*)p->scorer), a); if (e) return e; -  } +  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o;    if (p->precomputed_index) {      e = (*v)(p->precomputed_index, a); if (e) return e;    }    if (p->precomputed_collocations) {      e = (*v)(p->precomputed_collocations, a); if (e) return e;    } -  if (p->precompute_file) { -    e = (*v)(p->precompute_file, a); if (e) return e; -  } -  if (p->max_rank) { -    e = (*v)(p->max_rank, a); if (e) return e; -  } -  if (p->prev_norm_prefix) { -    e = (*v)(p->prev_norm_prefix, a); if (e) return e; -  } -  if (p->fsa) { -    e = (*v)(((PyObject*)p->fsa), a); if (e) return e; -  } -  if (p->fda) { -    e = (*v)(((PyObject*)p->fda), a); if (e) return e; -  } -  if (p->eda) { -    e = (*v)(((PyObject*)p->eda), a); if (e) return e; -  } -  if (p->alignment) { -    e = (*v)(((PyObject*)p->alignment), a); if (e) return e; -  } -  if (p->eid2symid) { -    e = (*v)(((PyObject*)p->eid2symid), a); if (e) return e; -  } -  if (p->fid2symid) { -    e = (*v)(((PyObject*)p->fid2symid), a); if (e) return e; -  } -  if (p->findexes) { -    e = (*v)(((PyObject*)p->findexes), a); if (e) return e; -  } -  if (p->findexes1) { -    e = (*v)(((PyObject*)p->findexes1), a); if (e) return e; -  } -  if (p->samples_f) { -    e = (*v)(p->samples_f, a); if (e) return e; -  } -  if (p->phrases_f) { -    e = (*v)(p->phrases_f, a); if (e) return e; -  } -  if (p->phrases_e) { -    e = (*v)(p->phrases_e, a); if (e) return e; -  } -  if (p->phrases_fe) { -    e = (*v)(p->phrases_fe, a); if (e) return e; -  } -  if (p->phrases_al) { -    e = (*v)(p->phrases_al, a); if (e) return e; -  } -  if (p->bilex_f) { -    e = (*v)(p->bilex_f, a); if (e) return e; -  } -  if (p->bilex_e) { -    e = (*v)(p->bilex_e, a); if (e) return e; -  } -  if (p->bilex_fe) { -    e = (*v)(p->bilex_fe, a); if (e) return e; -  }    return 0;  } -static int __pyx_tp_clear_3_sa_HieroCachingRuleFactory(PyObject *o) { -  struct __pyx_obj_3_sa_HieroCachingRuleFactory *p = (struct __pyx_obj_3_sa_HieroCachingRuleFactory *)o; +static int __pyx_tp_clear_3_sa_Precomputation(PyObject *o) { +  struct __pyx_obj_3_sa_Precomputation *p = (struct __pyx_obj_3_sa_Precomputation *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->rules); -  p->rules = ((struct __pyx_obj_3_sa_TrieTable *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->sampler); -  p->sampler = ((struct __pyx_obj_3_sa_Sampler *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->scorer); -  p->scorer = ((struct __pyx_obj_3_sa_Scorer *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp);    tmp = ((PyObject*)p->precomputed_index);    p->precomputed_index = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->precomputed_collocations);    p->precomputed_collocations = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->precompute_file); -  p->precompute_file = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->max_rank); -  p->max_rank = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->prev_norm_prefix); -  p->prev_norm_prefix = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->fsa); -  p->fsa = ((struct __pyx_obj_3_sa_SuffixArray *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->fda); -  p->fda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->eda); -  p->eda = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->alignment); -  p->alignment = ((struct __pyx_obj_3_sa_Alignment *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->eid2symid); -  p->eid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->fid2symid); -  p->fid2symid = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->findexes); -  p->findexes = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->findexes1); -  p->findexes1 = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->samples_f); -  p->samples_f = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->phrases_f); -  p->phrases_f = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->phrases_e); -  p->phrases_e = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->phrases_fe); -  p->phrases_fe = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->phrases_al); -  p->phrases_al = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->bilex_f); -  p->bilex_f = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->bilex_e); -  p->bilex_e = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->bilex_fe); -  p->bilex_fe = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa_HieroCachingRuleFactory[] = { -  {__Pyx_NAMESTR("configure"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_3configure, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_2configure)}, -  {__Pyx_NAMESTR("pattern2phrase"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_5pattern2phrase, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("pattern2phrase_plus"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_7pattern2phrase_plus, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_9precompute, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_precomputed_collocation"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_11get_precomputed_collocation, METH_O, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("advance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_13advance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_all_nodes_isteps_away"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_15get_all_nodes_isteps_away, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("reachable"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_17reachable, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("shortest"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_19shortest, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_next_states"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_21get_next_states, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("input"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_23input, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_23HieroCachingRuleFactory_22input)}, -  {__Pyx_NAMESTR("add_instance"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_26add_instance, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("form_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_28form_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("fmt_rule"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_30fmt_rule, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("dump_online_stats"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_32dump_online_stats, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("dump_online_rules"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_34dump_online_rules, METH_NOARGS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("online_ctx_lookup"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_36online_ctx_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, -  {__Pyx_NAMESTR("get_f_phrases"), (PyCFunction)__pyx_pw_3_sa_23HieroCachingRuleFactory_38get_f_phrases, METH_O, __Pyx_DOCSTR(0)}, +static PyMethodDef __pyx_methods_3_sa_Precomputation[] = { +  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_3read_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_5write_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("precompute"), (PyCFunction)__pyx_pw_3_sa_14Precomputation_7precompute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number_HieroCachingRuleFactory = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_HieroCachingRuleFactory = { -  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_HieroCachingRuleFactory = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_HieroCachingRuleFactory = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = { +static PyTypeObject __pyx_type_3_sa_Precomputation = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.HieroCachingRuleFactory"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_HieroCachingRuleFactory), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.Precomputation"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Precomputation), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_HieroCachingRuleFactory, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_Precomputation, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -72220,24 +70032,24 @@ static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number_HieroCachingRuleFactory, /*tp_as_number*/ -  &__pyx_tp_as_sequence_HieroCachingRuleFactory, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_HieroCachingRuleFactory, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_HieroCachingRuleFactory, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  __Pyx_DOCSTR("This RuleFactory implements a caching \n    method using TrieTable, which makes phrase\n    generation somewhat speedier -- phrases only\n    need to be extracted once (however, it is\n    quite possible they need to be scored \n    for each input sentence, for contextual models)"), /*tp_doc*/ -  __pyx_tp_traverse_3_sa_HieroCachingRuleFactory, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_HieroCachingRuleFactory, /*tp_clear*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa_Precomputation, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Precomputation, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa_HieroCachingRuleFactory, /*tp_methods*/ +  __pyx_methods_3_sa_Precomputation, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -72247,7 +70059,7 @@ static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_HieroCachingRuleFactory, /*tp_new*/ +  __pyx_tp_new_3_sa_Precomputation, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -72260,341 +70072,82 @@ static PyTypeObject __pyx_type_3_sa_HieroCachingRuleFactory = {    0, /*tp_version_tag*/    #endif  }; -static struct __pyx_vtabstruct_3_sa_Scorer __pyx_vtable_3_sa_Scorer; -static PyObject *__pyx_tp_new_3_sa_Scorer(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa_Scorer *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa_Scorer *)o); -  p->__pyx_vtab = __pyx_vtabptr_3_sa_Scorer; -  p->models = Py_None; Py_INCREF(Py_None); -  return o; -} +static struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *__pyx_freelist_3_sa___pyx_scope_struct_18_alignments[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_18_alignments = 0; -static void __pyx_tp_dealloc_3_sa_Scorer(PyObject *o) { -  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o; -  Py_XDECREF(p->models); -  (*Py_TYPE(o)->tp_free)(o); -} - -static int __pyx_tp_traverse_3_sa_Scorer(PyObject *o, visitproc v, void *a) { -  int e; -  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o; -  if (p->models) { -    e = (*v)(p->models, a); if (e) return e; +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_18_alignments > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_18_alignments[--__pyx_freecount_3_sa___pyx_scope_struct_18_alignments]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0;    } -  return 0; -} - -static int __pyx_tp_clear_3_sa_Scorer(PyObject *o) { -  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o; -  PyObject* tmp; -  tmp = ((PyObject*)p->models); -  p->models = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  return 0; -} - -static PyMethodDef __pyx_methods_3_sa_Scorer[] = { -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number_Scorer = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence_Scorer = { -  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_Scorer = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_Scorer = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa_Scorer = { -  PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.Scorer"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa_Scorer), /*tp_basicsize*/ -  0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa_Scorer, /*tp_dealloc*/ -  0, /*tp_print*/ -  0, /*tp_getattr*/ -  0, /*tp_setattr*/ -  #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ -  #else -  0, /*reserved*/ -  #endif -  0, /*tp_repr*/ -  &__pyx_tp_as_number_Scorer, /*tp_as_number*/ -  &__pyx_tp_as_sequence_Scorer, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping_Scorer, /*tp_as_mapping*/ -  0, /*tp_hash*/ -  0, /*tp_call*/ -  0, /*tp_str*/ -  0, /*tp_getattro*/ -  0, /*tp_setattro*/ -  &__pyx_tp_as_buffer_Scorer, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ -  0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa_Scorer, /*tp_traverse*/ -  __pyx_tp_clear_3_sa_Scorer, /*tp_clear*/ -  0, /*tp_richcompare*/ -  0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ -  0, /*tp_iternext*/ -  __pyx_methods_3_sa_Scorer, /*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_pw_3_sa_6Scorer_1__init__, /*tp_init*/ -  0, /*tp_alloc*/ -  __pyx_tp_new_3_sa_Scorer, /*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_3_sa___pyx_scope_struct____iter__(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o); +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o); +  p->__pyx_v_point = 0;    p->__pyx_v_self = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_point); +  Py_CLEAR(p->__pyx_v_self); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_18_alignments < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments))) { +    __pyx_freelist_3_sa___pyx_scope_struct_18_alignments[__pyx_freecount_3_sa___pyx_scope_struct_18_alignments++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o; +  if (p->__pyx_v_point) { +    e = (*v)(p->__pyx_v_point, a); if (e) return e; +  }    if (p->__pyx_v_self) {      e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct____iter__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o;    PyObject* tmp; +  tmp = ((PyObject*)p->__pyx_v_point); +  p->__pyx_v_point = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct____iter__[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_18_alignments[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct____iter__ = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct____iter__ = { -  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___pyx_scope_struct____iter__ = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct____iter__ = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct____iter__"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_18_alignments"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -72604,24 +70157,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct____iter__, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct____iter__, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct____iter__, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct____iter__, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct____iter__, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct____iter__, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_18_alignments, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -72631,7 +70184,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct____iter__, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_18_alignments, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -72645,147 +70198,81 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o); -  p->__pyx_v_fp = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_14_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_sym = 0; +  p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o; -  Py_XDECREF(p->__pyx_v_fp); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_sym); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_14_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_14_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o; -  if (p->__pyx_v_fp) { -    e = (*v)(p->__pyx_v_fp, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  } +  if (p->__pyx_v_sym) { +    e = (*v)(p->__pyx_v_sym, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_fp); -  p->__pyx_v_fp = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_sym); +  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_14_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_1_read_bitext = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_1_read_bitext = { -  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___pyx_scope_struct_1_read_bitext = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_1_read_bitext = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_1_read_bitext"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_14_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -72795,24 +70282,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_1_read_bitext, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_1_read_bitext, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_1_read_bitext, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_1_read_bitext, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_14_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -72822,7 +70309,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -72835,123 +70322,86 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_SuffixArray __pyx_vtable_3_sa_SuffixArray; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_line = 0; -  p->__pyx_t_0 = 0; +static PyObject *__pyx_tp_new_3_sa_SuffixArray(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_SuffixArray *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_SuffixArray *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_SuffixArray; +  p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None); +  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_11SuffixArray_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_line); -  Py_XDECREF(p->__pyx_t_0); +static void __pyx_tp_dealloc_3_sa_SuffixArray(PyObject *o) { +  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->darray); +  Py_CLEAR(p->sa); +  Py_CLEAR(p->ha);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_SuffixArray(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o; +  if (p->darray) { +    e = (*v)(((PyObject*)p->darray), a); if (e) return e;    } -  if (p->__pyx_v_line) { -    e = (*v)(p->__pyx_v_line, a); if (e) return e; +  if (p->sa) { +    e = (*v)(((PyObject*)p->sa), a); if (e) return e;    } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  if (p->ha) { +    e = (*v)(((PyObject*)p->ha), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o; +static int __pyx_tp_clear_3_sa_SuffixArray(PyObject *o) { +  struct __pyx_obj_3_sa_SuffixArray *p = (struct __pyx_obj_3_sa_SuffixArray *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->darray); +  p->darray = ((struct __pyx_obj_3_sa_DataArray *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_line); -  p->__pyx_v_line = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->sa); +  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->ha); +  p->ha = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } +static PyObject *__pyx_sq_item_3_sa_SuffixArray(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 PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_2_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa_SuffixArray[] = { +  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_5read_text, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_4read_text)}, +  {__Pyx_NAMESTR("q3sort"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_7q3sort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3_sa_11SuffixArray_6q3sort)}, +  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_9write_text, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_11read_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_13write_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_15write_enhanced, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("lookup"), (PyCFunction)__pyx_pw_3_sa_11SuffixArray_17lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_2_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_2_genexpr = { +static PySequenceMethods __pyx_tp_as_sequence_SuffixArray = {    0, /*sq_length*/    0, /*sq_concat*/    0, /*sq_repeat*/ -  0, /*sq_item*/ +  __pyx_sq_item_3_sa_SuffixArray, /*sq_item*/    0, /*sq_slice*/    0, /*sq_ass_item*/    0, /*sq_ass_slice*/ @@ -72960,39 +70410,18 @@ static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_2_genexpr = {    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_2_genexpr = { +static PyMappingMethods __pyx_tp_as_mapping_SuffixArray = {    0, /*mp_length*/ -  0, /*mp_subscript*/ +  __pyx_pw_3_sa_11SuffixArray_3__getitem__, /*mp_subscript*/    0, /*mp_ass_subscript*/  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_2_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = { +static PyTypeObject __pyx_type_3_sa_SuffixArray = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_2_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.SuffixArray"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_SuffixArray), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_SuffixArray, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -73002,24 +70431,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_2_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_2_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_2_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_SuffixArray, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_SuffixArray, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_2_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_SuffixArray, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_SuffixArray, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_2_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_SuffixArray, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -73029,7 +70458,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_SuffixArray, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -73043,187 +70472,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o); -  p->__pyx_v_ngram = 0; -  p->__pyx_v_ngram_start = 0; -  p->__pyx_v_ngram_starts = 0; -  p->__pyx_v_run_start = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *__pyx_freelist_3_sa___pyx_scope_struct_16___str__[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_16___str__ = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_16___str__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_16___str__[--__pyx_freecount_3_sa___pyx_scope_struct_16___str__]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o);    p->__pyx_v_self = 0; -  p->__pyx_v_veb = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_ngram)); -  Py_XDECREF(((PyObject *)p->__pyx_v_ngram_start)); -  Py_XDECREF(((PyObject *)p->__pyx_v_ngram_starts)); -  Py_XDECREF(((PyObject *)p->__pyx_v_run_start)); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  Py_XDECREF(((PyObject *)p->__pyx_v_veb)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_16___str__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__))) { +    __pyx_freelist_3_sa___pyx_scope_struct_16___str__[__pyx_freecount_3_sa___pyx_scope_struct_16___str__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o; -  if (p->__pyx_v_ngram) { -    e = (*v)(p->__pyx_v_ngram, a); if (e) return e; -  } -  if (p->__pyx_v_ngram_start) { -    e = (*v)(((PyObject*)p->__pyx_v_ngram_start), a); if (e) return e; -  } -  if (p->__pyx_v_ngram_starts) { -    e = (*v)(p->__pyx_v_ngram_starts, a); if (e) return e; -  } -  if (p->__pyx_v_run_start) { -    e = (*v)(((PyObject*)p->__pyx_v_run_start), a); if (e) return e; -  } +  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o;    if (p->__pyx_v_self) {      e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    } -  if (p->__pyx_v_veb) { -    e = (*v)(((PyObject*)p->__pyx_v_veb), a); if (e) return e; -  }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *p = (struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_ngram); -  p->__pyx_v_ngram = ((PyObject*)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_ngram_start); -  p->__pyx_v_ngram_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_ngram_starts); -  p->__pyx_v_ngram_starts = ((PyObject*)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_run_start); -  p->__pyx_v_run_start = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_LCP *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_veb); -  p->__pyx_v_veb = ((struct __pyx_obj_3_sa_VEB *)Py_None); Py_INCREF(Py_None); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_16___str__[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_3_compute_stats = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_3_compute_stats = { -  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___pyx_scope_struct_3_compute_stats = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_3_compute_stats = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_3_compute_stats"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_3_compute_stats), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_16___str__"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_3_compute_stats, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -73233,24 +70540,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_3_compute_stats, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_3_compute_stats, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_3_compute_stats, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_3_compute_stats, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_3_compute_stats, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_3_compute_stats, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_3_compute_stats, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_16___str__, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -73260,7 +70567,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_3_compute_stats, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_16___str__, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -73273,156 +70580,96 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_3_compute_stats = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_Alphabet __pyx_vtable_3_sa_Alphabet; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o); -  p->__pyx_v_word_ids = 0; -  p->__pyx_v_words = 0; +static PyObject *__pyx_tp_new_3_sa_Alphabet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa_Alphabet *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Alphabet *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_Alphabet; +  p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); +  p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); +  p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_8Alphabet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o; -  Py_XDECREF(p->__pyx_v_word_ids); -  Py_XDECREF(p->__pyx_v_words); +static void __pyx_tp_dealloc_3_sa_Alphabet(PyObject *o) { +  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o; +  PyObject_GC_UnTrack(o); +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_8Alphabet_3__dealloc__(o); +    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); +    --Py_REFCNT(o); +    PyErr_Restore(etype, eval, etb); +  } +  Py_CLEAR(p->terminals); +  Py_CLEAR(p->nonterminals); +  Py_CLEAR(p->id2sym);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Alphabet(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o; -  if (p->__pyx_v_word_ids) { -    e = (*v)(p->__pyx_v_word_ids, a); if (e) return e; +  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o; +  if (p->terminals) { +    e = (*v)(((PyObject*)p->terminals), a); if (e) return e;    } -  if (p->__pyx_v_words) { -    e = (*v)(p->__pyx_v_words, a); if (e) return e; +  if (p->nonterminals) { +    e = (*v)(((PyObject*)p->nonterminals), a); if (e) return e; +  } +  if (p->id2sym) { +    e = (*v)(p->id2sym, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o; +static int __pyx_tp_clear_3_sa_Alphabet(PyObject *o) { +  struct __pyx_obj_3_sa_Alphabet *p = (struct __pyx_obj_3_sa_Alphabet *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_word_ids); -  p->__pyx_v_word_ids = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->terminals); +  p->terminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_words); -  p->__pyx_v_words = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->nonterminals); +  p->nonterminals = ((struct __pyx_obj_3_sa_StringMap *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->id2sym); +  p->id2sym = ((PyObject*)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice[] = { -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_4_make_lattice = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; +static PyObject *__pyx_getprop_3_sa_8Alphabet_terminals(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_8Alphabet_9terminals_1__get__(o); +} -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_4_make_lattice = { -  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 PyObject *__pyx_getprop_3_sa_8Alphabet_nonterminals(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_8Alphabet_12nonterminals_1__get__(o); +} -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_4_make_lattice = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ +static PyMethodDef __pyx_methods_3_sa_Alphabet[] = { +  {0, 0, 0, 0}  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_4_make_lattice = { -  #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 +static struct PyGetSetDef __pyx_getsets_3_sa_Alphabet[] = { +  {(char *)"terminals", __pyx_getprop_3_sa_8Alphabet_terminals, 0, 0, 0}, +  {(char *)"nonterminals", __pyx_getprop_3_sa_8Alphabet_nonterminals, 0, 0, 0}, +  {0, 0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = { +static PyTypeObject __pyx_type_3_sa_Alphabet = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_4_make_lattice"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.Alphabet"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Alphabet), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_Alphabet, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -73432,26 +70679,26 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_4_make_lattice, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_4_make_lattice, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_4_make_lattice, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_4_make_lattice, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_Alphabet, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Alphabet, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice, /*tp_methods*/ +  __pyx_methods_3_sa_Alphabet, /*tp_methods*/    0, /*tp_members*/ -  0, /*tp_getset*/ +  __pyx_getsets_3_sa_Alphabet, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -73459,7 +70706,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice, /*tp_new*/ +  __pyx_tp_new_3_sa_Alphabet, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -73473,192 +70720,124 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_word = 0; -  p->__pyx_t_0 = 0; +static PyObject *__pyx_tp_new_3_sa_Rule(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_Rule *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Rule *)o); +  p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); +  p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); +  p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None); +  p->word_alignments = Py_None; Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_4Rule_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_word); -  Py_XDECREF(p->__pyx_t_0); +static void __pyx_tp_dealloc_3_sa_Rule(PyObject *o) { +  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->f); +  Py_CLEAR(p->e); +  Py_CLEAR(p->scores); +  Py_CLEAR(p->word_alignments);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Rule(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o; +  if (p->f) { +    e = (*v)(((PyObject*)p->f), a); if (e) return e;    } -  if (p->__pyx_v_word) { -    e = (*v)(p->__pyx_v_word, a); if (e) return e; +  if (p->e) { +    e = (*v)(((PyObject*)p->e), a); if (e) return e;    } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  if (p->scores) { +    e = (*v)(((PyObject*)p->scores), a); if (e) return e; +  } +  if (p->word_alignments) { +    e = (*v)(p->word_alignments, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; +static int __pyx_tp_clear_3_sa_Rule(PyObject *o) { +  struct __pyx_obj_3_sa_Rule *p = (struct __pyx_obj_3_sa_Rule *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->f); +  p->f = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_word); -  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->e); +  p->e = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->scores); +  p->scores = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->word_alignments); +  p->word_alignments = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_5_genexpr[] = { -  {0, 0, 0, 0} -}; - -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_5_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; +static PyObject *__pyx_getprop_3_sa_4Rule_f(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_4Rule_1f_1__get__(o); +} -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_5_genexpr = { -  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 PyObject *__pyx_getprop_3_sa_4Rule_e(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_4Rule_1e_1__get__(o); +} -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_5_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ +static PyMethodDef __pyx_methods_3_sa_Rule[] = { +  {__Pyx_NAMESTR("fmerge"), (PyCFunction)__pyx_pw_3_sa_4Rule_7fmerge, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_4Rule_9arity, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("alignments"), (PyCFunction)__pyx_pw_3_sa_4Rule_13alignments, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0}  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_5_genexpr = { -  #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 +static struct PyGetSetDef __pyx_getsets_3_sa_Rule[] = { +  {(char *)"f", __pyx_getprop_3_sa_4Rule_f, 0, 0, 0}, +  {(char *)"e", __pyx_getprop_3_sa_4Rule_e, 0, 0, 0}, +  {0, 0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_5_genexpr = { +static PyTypeObject __pyx_type_3_sa_Rule = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_5_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.Rule"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Rule), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_Rule, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ +  __pyx_pw_3_sa_4Rule_5__cmp__, /*tp_compare*/    #else    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_5_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_5_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_5_genexpr, /*tp_as_mapping*/ -  0, /*tp_hash*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  __pyx_pw_3_sa_4Rule_3__hash__, /*tp_hash*/    0, /*tp_call*/ -  0, /*tp_str*/ +  __pyx_pw_3_sa_4Rule_11__str__, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_5_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_Rule, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Rule, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_5_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_Rule, /*tp_methods*/    0, /*tp_members*/ -  0, /*tp_getset*/ +  __pyx_getsets_3_sa_Rule, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -73666,7 +70845,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_5_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_Rule, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -73680,10 +70859,21 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_5_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { +static struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_6_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {    struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  }    p = ((struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o);    p->__pyx_outer_scope = 0;    p->__pyx_v_word = 0; @@ -73693,10 +70883,15 @@ static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_6_genexpr(PyTypeObject *t,  static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_6_genexpr(PyObject *o) {    struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_word); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_word); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_6_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_6_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  }  static int __pyx_tp_traverse_3_sa___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) { @@ -73733,104 +70928,6 @@ static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_6_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_6_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_6_genexpr = { -  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___pyx_scope_struct_6_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_6_genexpr = { -  #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 -}; -  static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_6_genexpr = {    PyVarObject_HEAD_INIT(0, 0)    __Pyx_NAMESTR("_sa.__pyx_scope_struct_6_genexpr"), /*tp_name*/ @@ -73846,16 +70943,16 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_6_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_6_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_6_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_6_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_6_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/    __pyx_tp_traverse_3_sa___pyx_scope_struct_6_genexpr, /*tp_traverse*/    __pyx_tp_clear_3_sa___pyx_scope_struct_6_genexpr, /*tp_clear*/ @@ -73887,147 +70984,145 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_6_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o); -  p->__pyx_v_lattice = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *__pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_21_add_instance = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[--__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o); +  p->__pyx_v_al = 0; +  p->__pyx_v_cover = 0; +  p->__pyx_v_e_nt_cover = 0; +  p->__pyx_v_e_words = 0; +  p->__pyx_v_ef_span = 0; +  p->__pyx_v_extract = 0; +  p->__pyx_v_f_len = 0; +  p->__pyx_v_f_words = 0; +  p->__pyx_v_fe_span = 0; +  p->__pyx_v_rules = 0; +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o; -  Py_XDECREF(p->__pyx_v_lattice); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_al); +  Py_CLEAR(p->__pyx_v_cover); +  Py_CLEAR(p->__pyx_v_e_nt_cover); +  Py_CLEAR(p->__pyx_v_e_words); +  Py_CLEAR(p->__pyx_v_ef_span); +  Py_CLEAR(p->__pyx_v_extract); +  Py_CLEAR(p->__pyx_v_f_len); +  Py_CLEAR(p->__pyx_v_f_words); +  Py_CLEAR(p->__pyx_v_fe_span); +  Py_CLEAR(p->__pyx_v_rules); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance))) { +    __pyx_freelist_3_sa___pyx_scope_struct_21_add_instance[__pyx_freecount_3_sa___pyx_scope_struct_21_add_instance++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o; -  if (p->__pyx_v_lattice) { -    e = (*v)(p->__pyx_v_lattice, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o; +  if (p->__pyx_v_al) { +    e = (*v)(p->__pyx_v_al, a); if (e) return e; +  } +  if (p->__pyx_v_cover) { +    e = (*v)(p->__pyx_v_cover, a); if (e) return e; +  } +  if (p->__pyx_v_e_nt_cover) { +    e = (*v)(p->__pyx_v_e_nt_cover, a); if (e) return e; +  } +  if (p->__pyx_v_e_words) { +    e = (*v)(p->__pyx_v_e_words, a); if (e) return e; +  } +  if (p->__pyx_v_ef_span) { +    e = (*v)(p->__pyx_v_ef_span, a); if (e) return e; +  } +  if (p->__pyx_v_extract) { +    e = (*v)(p->__pyx_v_extract, a); if (e) return e; +  } +  if (p->__pyx_v_f_len) { +    e = (*v)(p->__pyx_v_f_len, a); if (e) return e; +  } +  if (p->__pyx_v_f_words) { +    e = (*v)(p->__pyx_v_f_words, a); if (e) return e; +  } +  if (p->__pyx_v_fe_span) { +    e = (*v)(p->__pyx_v_fe_span, a); if (e) return e; +  } +  if (p->__pyx_v_rules) { +    e = (*v)(p->__pyx_v_rules, a); if (e) return e; +  } +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_lattice); -  p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_al); +  p->__pyx_v_al = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_cover); +  p->__pyx_v_cover = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_e_nt_cover); +  p->__pyx_v_e_nt_cover = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_e_words); +  p->__pyx_v_e_words = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_ef_span); +  p->__pyx_v_ef_span = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_extract); +  p->__pyx_v_extract = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_f_len); +  p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_f_words); +  p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_fe_span); +  p->__pyx_v_fe_span = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_rules); +  p->__pyx_v_rules = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_21_add_instance[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_7_decode_lattice = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_7_decode_lattice = { -  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___pyx_scope_struct_7_decode_lattice = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_7_decode_lattice = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_7_decode_lattice"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_21_add_instance"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -74037,24 +71132,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_7_decode_lattice, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_7_decode_lattice, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_7_decode_lattice, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_7_decode_lattice, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_21_add_instance, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -74064,7 +71159,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -74078,211 +71173,81 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o); +static struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_2_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o);    p->__pyx_outer_scope = 0; -  p->__pyx_v_arc = 0; -  p->__pyx_v_dist = 0; -  p->__pyx_v_node = 0; -  p->__pyx_v_sym = 0; -  p->__pyx_v_weight = 0; +  p->__pyx_v_line = 0;    p->__pyx_t_0 = 0; -  p->__pyx_t_3 = 0; -  p->__pyx_t_4 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_arc); -  Py_XDECREF(p->__pyx_v_dist); -  Py_XDECREF(p->__pyx_v_node); -  Py_XDECREF(p->__pyx_v_sym); -  Py_XDECREF(p->__pyx_v_weight); -  Py_XDECREF(p->__pyx_t_0); -  Py_XDECREF(p->__pyx_t_3); -  Py_XDECREF(p->__pyx_t_4); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_line); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_2_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o;    if (p->__pyx_outer_scope) {      e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->__pyx_v_arc) { -    e = (*v)(p->__pyx_v_arc, a); if (e) return e; -  } -  if (p->__pyx_v_dist) { -    e = (*v)(p->__pyx_v_dist, a); if (e) return e; -  } -  if (p->__pyx_v_node) { -    e = (*v)(p->__pyx_v_node, a); if (e) return e; -  } -  if (p->__pyx_v_sym) { -    e = (*v)(p->__pyx_v_sym, a); if (e) return e; -  } -  if (p->__pyx_v_weight) { -    e = (*v)(p->__pyx_v_weight, a); if (e) return e; +  if (p->__pyx_v_line) { +    e = (*v)(p->__pyx_v_line, a); if (e) return e;    }    if (p->__pyx_t_0) {      e = (*v)(p->__pyx_t_0, a); if (e) return e;    } -  if (p->__pyx_t_3) { -    e = (*v)(p->__pyx_t_3, a); if (e) return e; -  } -  if (p->__pyx_t_4) { -    e = (*v)(p->__pyx_t_4, a); if (e) return e; -  }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr *)o;    PyObject* tmp;    tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_arc); -  p->__pyx_v_arc = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_dist); -  p->__pyx_v_dist = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_node); -  p->__pyx_v_node = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_sym); -  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_weight); -  p->__pyx_v_weight = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_line); +  p->__pyx_v_line = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_0);    p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_3); -  p->__pyx_t_3 = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_4); -  p->__pyx_t_4 = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_8_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_2_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_8_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_8_genexpr = { -  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___pyx_scope_struct_8_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_8_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_2_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_8_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_2_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_2_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_2_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -74292,24 +71257,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_8_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_8_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_8_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_8_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_2_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_2_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_8_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_2_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -74319,7 +71284,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_2_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -74332,148 +71297,57 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_PhraseLocation __pyx_vtable_3_sa_PhraseLocation; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o); -  p->__pyx_v_lattice = 0; +static PyObject *__pyx_tp_new_3_sa_PhraseLocation(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_PhraseLocation *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_PhraseLocation *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_PhraseLocation; +  p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_14PhraseLocation_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; -  Py_XDECREF(p->__pyx_v_lattice); +static void __pyx_tp_dealloc_3_sa_PhraseLocation(PyObject *o) { +  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->arr);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_PhraseLocation(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; -  if (p->__pyx_v_lattice) { -    e = (*v)(p->__pyx_v_lattice, a); if (e) return e; +  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o; +  if (p->arr) { +    e = (*v)(((PyObject*)p->arr), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *p = (struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)o; +static int __pyx_tp_clear_3_sa_PhraseLocation(PyObject *o) { +  struct __pyx_obj_3_sa_PhraseLocation *p = (struct __pyx_obj_3_sa_PhraseLocation *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_lattice); -  p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->arr); +  p->arr = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence[] = { +static PyMethodDef __pyx_methods_3_sa_PhraseLocation[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_9_decode_sentence = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_9_decode_sentence = { -  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___pyx_scope_struct_9_decode_sentence = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_9_decode_sentence = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = { +static PyTypeObject __pyx_type_3_sa_PhraseLocation = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_9_decode_sentence"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.PhraseLocation"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_PhraseLocation), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_PhraseLocation, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -74483,24 +71357,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_9_decode_sentence, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_9_decode_sentence, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_9_decode_sentence, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_9_decode_sentence, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_PhraseLocation, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_PhraseLocation, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_methods*/ +  __pyx_methods_3_sa_PhraseLocation, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -74510,7 +71384,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_9_decode_sentence, /*tp_new*/ +  __pyx_tp_new_3_sa_PhraseLocation, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -74524,171 +71398,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_9_decode_sentence = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v__ = 0; -  p->__pyx_v_sym = 0; -  p->__pyx_t_0 = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *__pyx_freelist_3_sa___pyx_scope_struct_15___iter__[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_15___iter__ = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_15___iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_15___iter__[--__pyx_freecount_3_sa___pyx_scope_struct_15___iter__]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o); +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v__); -  Py_XDECREF(p->__pyx_v_sym); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_15___iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__))) { +    __pyx_freelist_3_sa___pyx_scope_struct_15___iter__[__pyx_freecount_3_sa___pyx_scope_struct_15___iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; -  } -  if (p->__pyx_v__) { -    e = (*v)(p->__pyx_v__, a); if (e) return e; -  } -  if (p->__pyx_v_sym) { -    e = (*v)(p->__pyx_v_sym, a); if (e) return e; -  } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o; +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v__); -  p->__pyx_v__ = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_sym); -  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_10_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_15___iter__[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_10_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_10_genexpr = { -  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___pyx_scope_struct_10_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_10_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_10_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_15___iter__"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -74698,24 +71466,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_10_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_10_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_10_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_10_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_10_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_15___iter__, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -74725,7 +71493,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_15___iter__, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -74739,147 +71507,73 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o); -  p->__pyx_v_words = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *__pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_22_form_rule = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[--__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o); +  p->__pyx_v_links = 0; +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o; -  Py_XDECREF(p->__pyx_v_words); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_links); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule))) { +    __pyx_freelist_3_sa___pyx_scope_struct_22_form_rule[__pyx_freecount_3_sa___pyx_scope_struct_22_form_rule++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o; -  if (p->__pyx_v_words) { -    e = (*v)(p->__pyx_v_words, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o; +  if (p->__pyx_v_links) { +    e = (*v)(p->__pyx_v_links, a); if (e) return e; +  } +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_words); -  p->__pyx_v_words = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_links); +  p->__pyx_v_links = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_11_encode_words[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_22_form_rule[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_11_encode_words = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_11_encode_words = { -  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___pyx_scope_struct_11_encode_words = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_11_encode_words = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_11_encode_words"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_22_form_rule"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_11_encode_words, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -74889,24 +71583,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_11_encode_words, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_11_encode_words, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_11_encode_words, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_11_encode_words, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_11_encode_words, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_11_encode_words, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_11_encode_words, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_22_form_rule, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -74916,7 +71610,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_11_encode_words, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -74930,33 +71624,49 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_11_encode_words = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o); +static struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_25_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o);    p->__pyx_outer_scope = 0; -  p->__pyx_v_word = 0; +  p->__pyx_v_packed = 0;    p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_word); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_packed); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_25_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_25_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o;    if (p->__pyx_outer_scope) {      e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->__pyx_v_word) { -    e = (*v)(p->__pyx_v_word, a); if (e) return e; +  if (p->__pyx_v_packed) { +    e = (*v)(p->__pyx_v_packed, a); if (e) return e;    }    if (p->__pyx_t_0) {      e = (*v)(p->__pyx_t_0, a); if (e) return e; @@ -74964,14 +71674,14 @@ static int __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr(PyObject *o, vis    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o;    PyObject* tmp;    tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_11_encode_words *)Py_None); Py_INCREF(Py_None); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_word); -  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_packed); +  p->__pyx_v_packed = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_0);    p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); @@ -74979,114 +71689,16 @@ static int __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr(PyObject *o) {    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_12_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_25_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_12_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_12_genexpr = { -  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___pyx_scope_struct_12_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_12_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_12_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_12_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_25_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_12_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -75096,24 +71708,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_12_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_12_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_12_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_12_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_12_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_12_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_12_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_25_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -75123,7 +71735,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_12_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -75137,147 +71749,73 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_12_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o); -  p->__pyx_v_syms = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *__pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[--__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o); +  p->__pyx_v_a = 0; +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o; -  Py_XDECREF(p->__pyx_v_syms); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_a); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule))) { +    __pyx_freelist_3_sa___pyx_scope_struct_24_fmt_rule[__pyx_freecount_3_sa___pyx_scope_struct_24_fmt_rule++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o; -  if (p->__pyx_v_syms) { -    e = (*v)(p->__pyx_v_syms, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o; +  if (p->__pyx_v_a) { +    e = (*v)(p->__pyx_v_a, a); if (e) return e; +  } +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_syms); -  p->__pyx_v_syms = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_a); +  p->__pyx_v_a = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_13_decode_words[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_13_decode_words = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_13_decode_words = { -  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___pyx_scope_struct_13_decode_words = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_13_decode_words = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_13_decode_words"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_24_fmt_rule"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -75287,24 +71825,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_13_decode_words, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_13_decode_words, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_13_decode_words, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_13_decode_words, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_13_decode_words, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -75314,7 +71852,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -75328,163 +71866,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_sym = 0; -  p->__pyx_t_0 = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *__pyx_freelist_3_sa___pyx_scope_struct_28___str__[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_28___str__ = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_28___str__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_28___str__[--__pyx_freecount_3_sa___pyx_scope_struct_28___str__]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o); +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_sym); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_28___str__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__))) { +    __pyx_freelist_3_sa___pyx_scope_struct_28___str__[__pyx_freecount_3_sa___pyx_scope_struct_28___str__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; -  } -  if (p->__pyx_v_sym) { -    e = (*v)(p->__pyx_v_sym, a); if (e) return e; -  } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o; +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_sym); -  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_14_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_28___str__[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_14_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_14_genexpr = { -  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___pyx_scope_struct_14_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_14_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_14_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_14_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_28___str__"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_14_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -75494,24 +71934,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_14_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_14_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_14_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_14_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_14_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_14_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_14_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_28___str__, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -75521,7 +71961,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_14_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_28___str__, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -75535,147 +71975,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_14_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_15___iter__(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o); -  p->__pyx_v_self = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *__pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[--__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o); +  p->__pyx_v_fp = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_fp); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext))) { +    __pyx_freelist_3_sa___pyx_scope_struct_1_read_bitext[__pyx_freecount_3_sa___pyx_scope_struct_1_read_bitext++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o; -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o; +  if (p->__pyx_v_fp) { +    e = (*v)(p->__pyx_v_fp, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__ *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *p = (struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Phrase *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_fp); +  p->__pyx_v_fp = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_15___iter__[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_15___iter__ = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_15___iter__ = { -  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___pyx_scope_struct_15___iter__ = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_15___iter__ = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_1_read_bitext = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_15___iter__"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_15___iter__), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_1_read_bitext"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_1_read_bitext), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_15___iter__, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_1_read_bitext, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -75685,24 +72043,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_15___iter__, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_15___iter__, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_15___iter__, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_15___iter__, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_15___iter__, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_15___iter__, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_1_read_bitext, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_1_read_bitext, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_15___iter__, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_1_read_bitext, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -75712,7 +72070,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_15___iter__, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_1_read_bitext, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -75726,147 +72084,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_15___iter__ = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_16___str__(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o); -  p->__pyx_v_self = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *__pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_13_decode_words = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[--__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o); +  p->__pyx_v_syms = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_syms); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words))) { +    __pyx_freelist_3_sa___pyx_scope_struct_13_decode_words[__pyx_freecount_3_sa___pyx_scope_struct_13_decode_words++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o; -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o; +  if (p->__pyx_v_syms) { +    e = (*v)(p->__pyx_v_syms, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *p = (struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_syms); +  p->__pyx_v_syms = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_16___str__[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_13_decode_words[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_16___str__ = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_16___str__ = { -  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___pyx_scope_struct_16___str__ = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_16___str__ = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_13_decode_words = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_16___str__"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_16___str__), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_13_decode_words"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_13_decode_words), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_16___str__, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_13_decode_words, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -75876,24 +72152,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_16___str__, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_16___str__, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_16___str__, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_16___str__, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_16___str__, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_16___str__, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_13_decode_words, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_13_decode_words, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_16___str__, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_13_decode_words, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -75903,7 +72179,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_16___str__, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_13_decode_words, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -75917,163 +72193,63 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_16___str__ = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_a = 0; -  p->__pyx_t_0 = 0; +static PyObject *__pyx_tp_new_3_sa_FeatureVector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa_FeatureVector *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_FeatureVector *)o); +  p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_13FeatureVector_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_a); -  Py_XDECREF(p->__pyx_t_0); +static void __pyx_tp_dealloc_3_sa_FeatureVector(PyObject *o) { +  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->names); +  Py_CLEAR(p->values);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_FeatureVector(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; -  } -  if (p->__pyx_v_a) { -    e = (*v)(p->__pyx_v_a, a); if (e) return e; +  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o; +  if (p->names) { +    e = (*v)(((PyObject*)p->names), a); if (e) return e;    } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  if (p->values) { +    e = (*v)(((PyObject*)p->values), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr *)o; +static int __pyx_tp_clear_3_sa_FeatureVector(PyObject *o) { +  struct __pyx_obj_3_sa_FeatureVector *p = (struct __pyx_obj_3_sa_FeatureVector *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_16___str__ *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_a); -  p->__pyx_v_a = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->names); +  p->names = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->values); +  p->values = ((struct __pyx_obj_3_sa_FloatList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_17_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa_FeatureVector[] = { +  {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pw_3_sa_13FeatureVector_3set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_17_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_17_genexpr = { -  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___pyx_scope_struct_17_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_17_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = { +static PyTypeObject __pyx_type_3_sa_FeatureVector = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_17_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_17_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.FeatureVector"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_FeatureVector), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_17_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_FeatureVector, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -76083,24 +72259,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_17_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_17_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_17_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/ -  0, /*tp_str*/ +  __pyx_pw_3_sa_13FeatureVector_8__str__, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_17_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_17_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_17_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_FeatureVector, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_FeatureVector, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ +  __pyx_pw_3_sa_13FeatureVector_5__iter__, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_17_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_FeatureVector, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -76110,7 +72286,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_17_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_FeatureVector, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -76124,163 +72300,65 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_17_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_18_alignments(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o); -  p->__pyx_v_point = 0; -  p->__pyx_v_self = 0; -  p->__pyx_t_0 = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *__pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[--__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o); +  p->__pyx_v_lattice = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o; -  Py_XDECREF(p->__pyx_v_point); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_lattice); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice))) { +    __pyx_freelist_3_sa___pyx_scope_struct_7_decode_lattice[__pyx_freecount_3_sa___pyx_scope_struct_7_decode_lattice++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o; -  if (p->__pyx_v_point) { -    e = (*v)(p->__pyx_v_point, a); if (e) return e; -  } -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; -  } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o; +  if (p->__pyx_v_lattice) { +    e = (*v)(p->__pyx_v_lattice, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *p = (struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_point); -  p->__pyx_v_point = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_Rule *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_lattice); +  p->__pyx_v_lattice = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_18_alignments[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_18_alignments = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_18_alignments = { -  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___pyx_scope_struct_18_alignments = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_18_alignments = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_7_decode_lattice = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_18_alignments"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_18_alignments), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_7_decode_lattice"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_18_alignments, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -76290,24 +72368,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_18_alignments, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_18_alignments, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_18_alignments, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_18_alignments, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_18_alignments, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_18_alignments, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_18_alignments, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -76317,7 +72395,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_18_alignments, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_7_decode_lattice, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -76331,10 +72409,21 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_18_alignments = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t, PyObject *a, PyObject *k) { +static struct __pyx_obj_3_sa___pyx_scope_struct_19_input *__pyx_freelist_3_sa___pyx_scope_struct_19_input[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_19_input = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {    struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_19_input > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_19_input[--__pyx_freecount_3_sa___pyx_scope_struct_19_input]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  }    p = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o);    p->__pyx_v_alignment = 0;    p->__pyx_v_als = 0; @@ -76390,72 +72479,77 @@ static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_19_input(PyTypeObject *t,    p->__pyx_v_xcat_index = 0;    p->__pyx_v_xnode = 0;    p->__pyx_v_xroot = 0; -  p->__pyx_t_2 = 0;    p->__pyx_t_3 = 0;    p->__pyx_t_4 = 0; +  p->__pyx_t_5 = 0;    return o;  }  static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_19_input(PyObject *o) {    struct __pyx_obj_3_sa___pyx_scope_struct_19_input *p = (struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o; -  Py_XDECREF(p->__pyx_v_alignment); -  Py_XDECREF(p->__pyx_v_als); -  Py_XDECREF(p->__pyx_v_alslist); -  Py_XDECREF(((PyObject *)p->__pyx_v_chunklen)); -  Py_XDECREF(p->__pyx_v_count); -  Py_XDECREF(p->__pyx_v_e); -  Py_XDECREF(p->__pyx_v_elist); -  Py_XDECREF(p->__pyx_v_extract); -  Py_XDECREF(p->__pyx_v_extract_start); -  Py_XDECREF(p->__pyx_v_extract_stop); -  Py_XDECREF(((PyObject *)p->__pyx_v_extracts)); -  Py_XDECREF(p->__pyx_v_f); -  Py_XDECREF(((PyObject *)p->__pyx_v_f_syms)); -  Py_XDECREF(p->__pyx_v_fcount); -  Py_XDECREF(p->__pyx_v_fphrases); -  Py_XDECREF(((PyObject *)p->__pyx_v_frontier)); -  Py_XDECREF(p->__pyx_v_frontier_nodes); -  Py_XDECREF(p->__pyx_v_fwords); -  Py_XDECREF(p->__pyx_v_genexpr); -  Py_XDECREF(((PyObject *)p->__pyx_v_hiero_phrase)); -  Py_XDECREF(p->__pyx_v_input_match); -  Py_XDECREF(p->__pyx_v_intersect_start_time); -  Py_XDECREF(p->__pyx_v_intersect_stop_time); -  Py_XDECREF(p->__pyx_v_is_shadow_path); -  Py_XDECREF(((PyObject *)p->__pyx_v_key)); -  Py_XDECREF(p->__pyx_v_lex_i); -  Py_XDECREF(p->__pyx_v_lex_j); -  Py_XDECREF(p->__pyx_v_loc); -  Py_XDECREF(((PyObject *)p->__pyx_v_locs)); -  Py_XDECREF(p->__pyx_v_max_locs); -  Py_XDECREF(p->__pyx_v_meta); -  Py_XDECREF(((PyObject *)p->__pyx_v_new_frontier)); -  Py_XDECREF(p->__pyx_v_new_node); -  Py_XDECREF(((PyObject *)p->__pyx_v_next_states)); -  Py_XDECREF(p->__pyx_v_node); -  Py_XDECREF(((PyObject *)p->__pyx_v_nodes_isteps_away_buffer)); -  Py_XDECREF(p->__pyx_v_pathlen); -  Py_XDECREF(p->__pyx_v_phrase); -  Py_XDECREF(((PyObject *)p->__pyx_v_phrase_location)); -  Py_XDECREF(p->__pyx_v_prefix); -  Py_XDECREF(((PyObject *)p->__pyx_v_reachable_buffer)); -  Py_XDECREF(p->__pyx_v_sa_range); -  Py_XDECREF(((PyObject *)p->__pyx_v_sample)); -  Py_XDECREF(((PyObject *)p->__pyx_v_scores)); -  Py_XDECREF(((PyObject *)p->__pyx_v_seen_phrases)); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  Py_XDECREF(p->__pyx_v_spanlen); -  Py_XDECREF(p->__pyx_v_stop_time); -  Py_XDECREF(p->__pyx_v_suffix_link); -  Py_XDECREF(p->__pyx_v_suffix_link_xcat_index); -  Py_XDECREF(p->__pyx_v_word_id); -  Py_XDECREF(p->__pyx_v_xcat_index); -  Py_XDECREF(p->__pyx_v_xnode); -  Py_XDECREF(p->__pyx_v_xroot); -  Py_XDECREF(p->__pyx_t_2); -  Py_XDECREF(p->__pyx_t_3); -  Py_XDECREF(p->__pyx_t_4); -  (*Py_TYPE(o)->tp_free)(o); +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_alignment); +  Py_CLEAR(p->__pyx_v_als); +  Py_CLEAR(p->__pyx_v_alslist); +  Py_CLEAR(p->__pyx_v_chunklen); +  Py_CLEAR(p->__pyx_v_count); +  Py_CLEAR(p->__pyx_v_e); +  Py_CLEAR(p->__pyx_v_elist); +  Py_CLEAR(p->__pyx_v_extract); +  Py_CLEAR(p->__pyx_v_extract_start); +  Py_CLEAR(p->__pyx_v_extract_stop); +  Py_CLEAR(p->__pyx_v_extracts); +  Py_CLEAR(p->__pyx_v_f); +  Py_CLEAR(p->__pyx_v_f_syms); +  Py_CLEAR(p->__pyx_v_fcount); +  Py_CLEAR(p->__pyx_v_fphrases); +  Py_CLEAR(p->__pyx_v_frontier); +  Py_CLEAR(p->__pyx_v_frontier_nodes); +  Py_CLEAR(p->__pyx_v_fwords); +  Py_CLEAR(p->__pyx_v_genexpr); +  Py_CLEAR(p->__pyx_v_hiero_phrase); +  Py_CLEAR(p->__pyx_v_input_match); +  Py_CLEAR(p->__pyx_v_intersect_start_time); +  Py_CLEAR(p->__pyx_v_intersect_stop_time); +  Py_CLEAR(p->__pyx_v_is_shadow_path); +  Py_CLEAR(p->__pyx_v_key); +  Py_CLEAR(p->__pyx_v_lex_i); +  Py_CLEAR(p->__pyx_v_lex_j); +  Py_CLEAR(p->__pyx_v_loc); +  Py_CLEAR(p->__pyx_v_locs); +  Py_CLEAR(p->__pyx_v_max_locs); +  Py_CLEAR(p->__pyx_v_meta); +  Py_CLEAR(p->__pyx_v_new_frontier); +  Py_CLEAR(p->__pyx_v_new_node); +  Py_CLEAR(p->__pyx_v_next_states); +  Py_CLEAR(p->__pyx_v_node); +  Py_CLEAR(p->__pyx_v_nodes_isteps_away_buffer); +  Py_CLEAR(p->__pyx_v_pathlen); +  Py_CLEAR(p->__pyx_v_phrase); +  Py_CLEAR(p->__pyx_v_phrase_location); +  Py_CLEAR(p->__pyx_v_prefix); +  Py_CLEAR(p->__pyx_v_reachable_buffer); +  Py_CLEAR(p->__pyx_v_sa_range); +  Py_CLEAR(p->__pyx_v_sample); +  Py_CLEAR(p->__pyx_v_scores); +  Py_CLEAR(p->__pyx_v_seen_phrases); +  Py_CLEAR(p->__pyx_v_self); +  Py_CLEAR(p->__pyx_v_spanlen); +  Py_CLEAR(p->__pyx_v_stop_time); +  Py_CLEAR(p->__pyx_v_suffix_link); +  Py_CLEAR(p->__pyx_v_suffix_link_xcat_index); +  Py_CLEAR(p->__pyx_v_word_id); +  Py_CLEAR(p->__pyx_v_xcat_index); +  Py_CLEAR(p->__pyx_v_xnode); +  Py_CLEAR(p->__pyx_v_xroot); +  Py_CLEAR(p->__pyx_t_3); +  Py_CLEAR(p->__pyx_t_4); +  Py_CLEAR(p->__pyx_t_5); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_19_input < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_19_input))) { +    __pyx_freelist_3_sa___pyx_scope_struct_19_input[__pyx_freecount_3_sa___pyx_scope_struct_19_input++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  }  static int __pyx_tp_traverse_3_sa___pyx_scope_struct_19_input(PyObject *o, visitproc v, void *a) { @@ -76623,15 +72717,15 @@ static int __pyx_tp_traverse_3_sa___pyx_scope_struct_19_input(PyObject *o, visit    if (p->__pyx_v_xroot) {      e = (*v)(p->__pyx_v_xroot, a); if (e) return e;    } -  if (p->__pyx_t_2) { -    e = (*v)(p->__pyx_t_2, a); if (e) return e; -  }    if (p->__pyx_t_3) {      e = (*v)(p->__pyx_t_3, a); if (e) return e;    }    if (p->__pyx_t_4) {      e = (*v)(p->__pyx_t_4, a); if (e) return e;    } +  if (p->__pyx_t_5) { +    e = (*v)(p->__pyx_t_5, a); if (e) return e; +  }    return 0;  } @@ -76800,15 +72894,15 @@ static int __pyx_tp_clear_3_sa___pyx_scope_struct_19_input(PyObject *o) {    tmp = ((PyObject*)p->__pyx_v_xroot);    p->__pyx_v_xroot = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_2); -  p->__pyx_t_2 = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_3);    p->__pyx_t_3 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_4);    p->__pyx_t_4 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_5); +  p->__pyx_t_5 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp);    return 0;  } @@ -76816,104 +72910,6 @@ static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_19_input[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_19_input = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_19_input = { -  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___pyx_scope_struct_19_input = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_19_input = { -  #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 -}; -  static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_19_input = {    PyVarObject_HEAD_INIT(0, 0)    __Pyx_NAMESTR("_sa.__pyx_scope_struct_19_input"), /*tp_name*/ @@ -76929,16 +72925,16 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_19_input = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_19_input, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_19_input, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_19_input, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_19_input, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/    __pyx_tp_traverse_3_sa___pyx_scope_struct_19_input, /*tp_traverse*/    __pyx_tp_clear_3_sa___pyx_scope_struct_19_input, /*tp_clear*/ @@ -76969,164 +72965,54 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_19_input = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_Scorer __pyx_vtable_3_sa_Scorer; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_word = 0; -  p->__pyx_t_0 = 0; +static PyObject *__pyx_tp_new_3_sa_Scorer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa_Scorer *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Scorer *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_Scorer; +  p->models = Py_None; Py_INCREF(Py_None);    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_word); -  Py_XDECREF(p->__pyx_t_0); +static void __pyx_tp_dealloc_3_sa_Scorer(PyObject *o) { +  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->models);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_20_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Scorer(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; -  } -  if (p->__pyx_v_word) { -    e = (*v)(p->__pyx_v_word, a); if (e) return e; -  } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o; +  if (p->models) { +    e = (*v)(p->models, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr *)o; +static int __pyx_tp_clear_3_sa_Scorer(PyObject *o) { +  struct __pyx_obj_3_sa_Scorer *p = (struct __pyx_obj_3_sa_Scorer *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_19_input *)Py_None); Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_word); -  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->models); +  p->models = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_20_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa_Scorer[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_20_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_20_genexpr = { -  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___pyx_scope_struct_20_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_20_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = { +static PyTypeObject __pyx_type_3_sa_Scorer = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_20_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_20_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.Scorer"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Scorer), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_20_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_Scorer, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -77136,24 +73022,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_20_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_20_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_20_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_20_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_20_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_20_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_Scorer, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Scorer, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_20_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_Scorer, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -77161,9 +73047,9 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = {    0, /*tp_descr_get*/    0, /*tp_descr_set*/    0, /*tp_dictoffset*/ -  0, /*tp_init*/ +  __pyx_pw_3_sa_6Scorer_1__init__, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_20_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_Scorer, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -77176,228 +73062,179 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_20_genexpr = {    0, /*tp_version_tag*/    #endif  }; +static struct __pyx_vtabstruct_3_sa_Alignment __pyx_vtable_3_sa_Alignment; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o); -  p->__pyx_v_al = 0; -  p->__pyx_v_cover = 0; -  p->__pyx_v_e_nt_cover = 0; -  p->__pyx_v_e_words = 0; -  p->__pyx_v_ef_span = 0; -  p->__pyx_v_extract = 0; -  p->__pyx_v_f_len = 0; -  p->__pyx_v_f_words = 0; -  p->__pyx_v_fe_span = 0; -  p->__pyx_v_rules = 0; -  p->__pyx_v_self = 0; +static PyObject *__pyx_tp_new_3_sa_Alignment(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_Alignment *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Alignment *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_Alignment; +  p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_9Alignment_5__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o; -  Py_XDECREF(p->__pyx_v_al); -  Py_XDECREF(p->__pyx_v_cover); -  Py_XDECREF(p->__pyx_v_e_nt_cover); -  Py_XDECREF(p->__pyx_v_e_words); -  Py_XDECREF(p->__pyx_v_ef_span); -  Py_XDECREF(p->__pyx_v_extract); -  Py_XDECREF(p->__pyx_v_f_len); -  Py_XDECREF(p->__pyx_v_f_words); -  Py_XDECREF(p->__pyx_v_fe_span); -  Py_XDECREF(p->__pyx_v_rules); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); +static void __pyx_tp_dealloc_3_sa_Alignment(PyObject *o) { +  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->links); +  Py_CLEAR(p->sent_index);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Alignment(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o; -  if (p->__pyx_v_al) { -    e = (*v)(p->__pyx_v_al, a); if (e) return e; -  } -  if (p->__pyx_v_cover) { -    e = (*v)(p->__pyx_v_cover, a); if (e) return e; -  } -  if (p->__pyx_v_e_nt_cover) { -    e = (*v)(p->__pyx_v_e_nt_cover, a); if (e) return e; -  } -  if (p->__pyx_v_e_words) { -    e = (*v)(p->__pyx_v_e_words, a); if (e) return e; -  } -  if (p->__pyx_v_ef_span) { -    e = (*v)(p->__pyx_v_ef_span, a); if (e) return e; -  } -  if (p->__pyx_v_extract) { -    e = (*v)(p->__pyx_v_extract, a); if (e) return e; -  } -  if (p->__pyx_v_f_len) { -    e = (*v)(p->__pyx_v_f_len, a); if (e) return e; -  } -  if (p->__pyx_v_f_words) { -    e = (*v)(p->__pyx_v_f_words, a); if (e) return e; -  } -  if (p->__pyx_v_fe_span) { -    e = (*v)(p->__pyx_v_fe_span, a); if (e) return e; -  } -  if (p->__pyx_v_rules) { -    e = (*v)(p->__pyx_v_rules, a); if (e) return e; +  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o; +  if (p->links) { +    e = (*v)(((PyObject*)p->links), a); if (e) return e;    } -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  if (p->sent_index) { +    e = (*v)(((PyObject*)p->sent_index), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *p = (struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance *)o; +static int __pyx_tp_clear_3_sa_Alignment(PyObject *o) { +  struct __pyx_obj_3_sa_Alignment *p = (struct __pyx_obj_3_sa_Alignment *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_al); -  p->__pyx_v_al = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_cover); -  p->__pyx_v_cover = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_e_nt_cover); -  p->__pyx_v_e_nt_cover = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_e_words); -  p->__pyx_v_e_words = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_ef_span); -  p->__pyx_v_ef_span = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_extract); -  p->__pyx_v_extract = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_f_len); -  p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_f_words); -  p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_fe_span); -  p->__pyx_v_fe_span = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_rules); -  p->__pyx_v_rules = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->links); +  p->links = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->sent_index); +  p->sent_index = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_21_add_instance[] = { +static PyMethodDef __pyx_methods_3_sa_Alignment[] = { +  {__Pyx_NAMESTR("unlink"), (PyCFunction)__pyx_pw_3_sa_9Alignment_1unlink, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_unlink)}, +  {__Pyx_NAMESTR("get_sent_links"), (PyCFunction)__pyx_pw_3_sa_9Alignment_3get_sent_links, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_7read_text, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_9read_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_text"), (PyCFunction)__pyx_pw_3_sa_9Alignment_11write_text, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_binary"), (PyCFunction)__pyx_pw_3_sa_9Alignment_13write_binary, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write_enhanced"), (PyCFunction)__pyx_pw_3_sa_9Alignment_15write_enhanced, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("alignment"), (PyCFunction)__pyx_pw_3_sa_9Alignment_17alignment, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_9Alignment_16alignment)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_21_add_instance = { -  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*/ +static PyTypeObject __pyx_type_3_sa_Alignment = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.Alignment"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Alignment), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa_Alignment, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa_Alignment, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Alignment, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa_Alignment, /*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_3_sa_Alignment, /*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 PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_21_add_instance = { -  0, /*sq_length*/ +static PyObject *__pyx_tp_new_3_sa_BitSet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  if (unlikely(__pyx_pw_3_sa_6BitSet_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} + +static void __pyx_tp_dealloc_3_sa_BitSet(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_6BitSet_3__dealloc__(o); +    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); +    --Py_REFCNT(o); +    PyErr_Restore(etype, eval, etb); +  } +  (*Py_TYPE(o)->tp_free)(o); +} + +static PyMethodDef __pyx_methods_3_sa_BitSet[] = { +  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_6BitSet_7insert, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("findsucc"), (PyCFunction)__pyx_pw_3_sa_6BitSet_9findsucc, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("min"), (PyCFunction)__pyx_pw_3_sa_6BitSet_13min, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("max"), (PyCFunction)__pyx_pw_3_sa_6BitSet_15max, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0} +}; + +static PySequenceMethods __pyx_tp_as_sequence_BitSet = { +  __pyx_pw_3_sa_6BitSet_17__len__, /*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*/ +  __pyx_pw_3_sa_6BitSet_19__contains__, /*sq_contains*/    0, /*sq_inplace_concat*/    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_21_add_instance = { -  0, /*mp_length*/ +static PyMappingMethods __pyx_tp_as_mapping_BitSet = { +  __pyx_pw_3_sa_6BitSet_17__len__, /*mp_length*/    0, /*mp_subscript*/    0, /*mp_ass_subscript*/  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_21_add_instance = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = { +static PyTypeObject __pyx_type_3_sa_BitSet = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_21_add_instance"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_21_add_instance), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.BitSet"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_BitSet), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_21_add_instance, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_BitSet, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -77407,24 +73244,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_21_add_instance, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_21_add_instance, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_21_add_instance, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_BitSet, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_BitSet, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/ -  0, /*tp_str*/ +  __pyx_pw_3_sa_6BitSet_11__str__, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_21_add_instance, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_21_add_instance, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_21_add_instance, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ +  __pyx_pw_3_sa_6BitSet_5__iter__, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_21_add_instance, /*tp_methods*/ +  __pyx_methods_3_sa_BitSet, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -77434,7 +73271,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_21_add_instance, /*tp_new*/ +  __pyx_tp_new_3_sa_BitSet, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -77448,155 +73285,142 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_21_add_instance = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o); -  p->__pyx_v_links = 0; -  p->__pyx_v_self = 0; +static PyObject *__pyx_tp_new_3_sa_Sampler(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_Sampler *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Sampler *)o); +  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_7Sampler_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o; -  Py_XDECREF(p->__pyx_v_links); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); +static void __pyx_tp_dealloc_3_sa_Sampler(PyObject *o) { +  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->sa);    (*Py_TYPE(o)->tp_free)(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_Sampler(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o; -  if (p->__pyx_v_links) { -    e = (*v)(p->__pyx_v_links, a); if (e) return e; -  } -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o; +  if (p->sa) { +    e = (*v)(((PyObject*)p->sa), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)o; +static int __pyx_tp_clear_3_sa_Sampler(PyObject *o) { +  struct __pyx_obj_3_sa_Sampler *p = (struct __pyx_obj_3_sa_Sampler *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_links); -  p->__pyx_v_links = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->sa); +  p->sa = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_22_form_rule[] = { +static PyMethodDef __pyx_methods_3_sa_Sampler[] = { +  {__Pyx_NAMESTR("sample"), (PyCFunction)__pyx_pw_3_sa_7Sampler_3sample, METH_O, __Pyx_DOCSTR(__pyx_doc_3_sa_7Sampler_2sample)},    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_22_form_rule = { -  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*/ +static PyTypeObject __pyx_type_3_sa_Sampler = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.Sampler"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Sampler), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa_Sampler, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  __Pyx_DOCSTR("A Sampler implements a logic for choosing\n    samples from a population range"), /*tp_doc*/ +  __pyx_tp_traverse_3_sa_Sampler, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_Sampler, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa_Sampler, /*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_3_sa_Sampler, /*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_3_sa_StringMap __pyx_vtable_3_sa_StringMap; -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_22_form_rule = { -  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 PyObject *__pyx_tp_new_3_sa_StringMap(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa_StringMap *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_StringMap *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_StringMap; +  if (unlikely(__pyx_pw_3_sa_9StringMap_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_22_form_rule = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; +static void __pyx_tp_dealloc_3_sa_StringMap(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_9StringMap_3__dealloc__(o); +    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); +    --Py_REFCNT(o); +    PyErr_Restore(etype, eval, etb); +  } +  (*Py_TYPE(o)->tp_free)(o); +} -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_22_form_rule = { -  #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 +static PyMethodDef __pyx_methods_3_sa_StringMap[] = { +  {0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = { +static PyTypeObject __pyx_type_3_sa_StringMap = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_22_form_rule"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.StringMap"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_StringMap), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_22_form_rule, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_StringMap, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -77606,24 +73430,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_22_form_rule, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_22_form_rule, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_22_form_rule, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_22_form_rule, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_22_form_rule, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_22_form_rule, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_22_form_rule, /*tp_methods*/ +  __pyx_methods_3_sa_StringMap, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -77633,7 +73457,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_22_form_rule, /*tp_new*/ +  __pyx_tp_new_3_sa_StringMap, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -77647,171 +73471,213 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_22_form_rule = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o); -  p->__pyx_outer_scope = 0; -  p->__pyx_v_i = 0; -  p->__pyx_v_j = 0; -  p->__pyx_t_0 = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *__pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[--__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o); +  p->__pyx_v_extract = 0; +  p->__pyx_v_f_len = 0; +  p->__pyx_v_f_words = 0; +  p->__pyx_v_phrases = 0; +  p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_i); -  Py_XDECREF(p->__pyx_v_j); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_extract); +  Py_CLEAR(p->__pyx_v_f_len); +  Py_CLEAR(p->__pyx_v_f_words); +  Py_CLEAR(p->__pyx_v_phrases); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases))) { +    __pyx_freelist_3_sa___pyx_scope_struct_26_get_f_phrases[__pyx_freecount_3_sa___pyx_scope_struct_26_get_f_phrases++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o; -  if (p->__pyx_outer_scope) { -    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o; +  if (p->__pyx_v_extract) { +    e = (*v)(p->__pyx_v_extract, a); if (e) return e;    } -  if (p->__pyx_v_i) { -    e = (*v)(p->__pyx_v_i, a); if (e) return e; +  if (p->__pyx_v_f_len) { +    e = (*v)(p->__pyx_v_f_len, a); if (e) return e;    } -  if (p->__pyx_v_j) { -    e = (*v)(p->__pyx_v_j, a); if (e) return e; +  if (p->__pyx_v_f_words) { +    e = (*v)(p->__pyx_v_f_words, a); if (e) return e;    } -  if (p->__pyx_t_0) { -    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  if (p->__pyx_v_phrases) { +    e = (*v)(p->__pyx_v_phrases, a); if (e) return e; +  } +  if (p->__pyx_v_self) { +    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_22_form_rule *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_extract); +  p->__pyx_v_extract = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_i); -  p->__pyx_v_i = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_f_len); +  p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_j); -  p->__pyx_v_j = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_f_words); +  p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_t_0); -  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_phrases); +  p->__pyx_v_phrases = ((PyObject*)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_self); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_23_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_23_genexpr = { -  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*/ +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_26_get_f_phrases"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases, /*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_3_sa___pyx_scope_struct_26_get_f_phrases, /*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 PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_23_genexpr = { -  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 PyObject *__pyx_tp_new_3_sa_TrieNode(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa_TrieNode *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_TrieNode *)o); +  p->children = Py_None; Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_8TrieNode_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_23_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ +static void __pyx_tp_dealloc_3_sa_TrieNode(PyObject *o) { +  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->children); +  (*Py_TYPE(o)->tp_free)(o); +} + +static int __pyx_tp_traverse_3_sa_TrieNode(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; +  if (p->children) { +    e = (*v)(p->children, a); if (e) return e; +  } +  return 0; +} + +static int __pyx_tp_clear_3_sa_TrieNode(PyObject *o) { +  struct __pyx_obj_3_sa_TrieNode *p = (struct __pyx_obj_3_sa_TrieNode *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->children); +  p->children = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} + +static PyObject *__pyx_getprop_3_sa_8TrieNode_children(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_8TrieNode_8children_1__get__(o); +} + +static int __pyx_setprop_3_sa_8TrieNode_children(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_8TrieNode_8children_3__set__(o, v); +  } +  else { +    return __pyx_pw_3_sa_8TrieNode_8children_5__del__(o); +  } +} + +static PyMethodDef __pyx_methods_3_sa_TrieNode[] = { +  {0, 0, 0, 0}  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_23_genexpr = { -  #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 +static struct PyGetSetDef __pyx_getsets_3_sa_TrieNode[] = { +  {(char *)"children", __pyx_getprop_3_sa_8TrieNode_children, __pyx_setprop_3_sa_8TrieNode_children, 0, 0}, +  {0, 0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = { +static PyTypeObject __pyx_type_3_sa_TrieNode = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_23_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_23_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.TrieNode"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_TrieNode), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_23_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_TrieNode, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -77821,26 +73687,26 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_23_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_23_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_23_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_23_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_23_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_23_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa_TrieNode, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_TrieNode, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_23_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_TrieNode, /*tp_methods*/    0, /*tp_members*/ -  0, /*tp_getset*/ +  __pyx_getsets_3_sa_TrieNode, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -77848,7 +73714,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_23_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_TrieNode, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -77862,155 +73728,208 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_23_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o); -  p->__pyx_v_a = 0; -  p->__pyx_v_self = 0; +static PyObject *__pyx_tp_new_3_sa_ExtendedTrieNode(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_ExtendedTrieNode *p; +  PyObject *o = __pyx_tp_new_3_sa_TrieNode(t, a, k); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_ExtendedTrieNode *)o); +  p->phrase = Py_None; Py_INCREF(Py_None); +  p->phrase_location = Py_None; Py_INCREF(Py_None); +  p->suffix_link = Py_None; Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_16ExtendedTrieNode_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  }    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o; -  Py_XDECREF(p->__pyx_v_a); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa_ExtendedTrieNode(PyObject *o) { +  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->phrase); +  Py_CLEAR(p->phrase_location); +  Py_CLEAR(p->suffix_link); +  PyObject_GC_Track(o); +  __pyx_tp_dealloc_3_sa_TrieNode(o);  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa_ExtendedTrieNode(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o; -  if (p->__pyx_v_a) { -    e = (*v)(p->__pyx_v_a, a); if (e) return e; +  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o; +  e = __pyx_tp_traverse_3_sa_TrieNode(o, v, a); if (e) return e; +  if (p->phrase) { +    e = (*v)(p->phrase, a); if (e) return e;    } -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  if (p->phrase_location) { +    e = (*v)(p->phrase_location, a); if (e) return e; +  } +  if (p->suffix_link) { +    e = (*v)(p->suffix_link, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *p = (struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)o; +static int __pyx_tp_clear_3_sa_ExtendedTrieNode(PyObject *o) { +  struct __pyx_obj_3_sa_ExtendedTrieNode *p = (struct __pyx_obj_3_sa_ExtendedTrieNode *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_a); -  p->__pyx_v_a = Py_None; Py_INCREF(Py_None); +  __pyx_tp_clear_3_sa_TrieNode(o); +  tmp = ((PyObject*)p->phrase); +  p->phrase = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->phrase_location); +  p->phrase_location = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->suffix_link); +  p->suffix_link = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule[] = { +static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_1__get__(o); +} + +static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_3__set__(o, v); +  } +  else { +    return __pyx_pw_3_sa_16ExtendedTrieNode_6phrase_5__del__(o); +  } +} + +static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_1__get__(o); +} + +static int __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_3__set__(o, v); +  } +  else { +    return __pyx_pw_3_sa_16ExtendedTrieNode_15phrase_location_5__del__(o); +  } +} + +static PyObject *__pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_1__get__(o); +} + +static int __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_3__set__(o, v); +  } +  else { +    return __pyx_pw_3_sa_16ExtendedTrieNode_11suffix_link_5__del__(o); +  } +} + +static PyMethodDef __pyx_methods_3_sa_ExtendedTrieNode[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_24_fmt_rule = { -  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*/ +static struct PyGetSetDef __pyx_getsets_3_sa_ExtendedTrieNode[] = { +  {(char *)"phrase", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase, 0, 0}, +  {(char *)"phrase_location", __pyx_getprop_3_sa_16ExtendedTrieNode_phrase_location, __pyx_setprop_3_sa_16ExtendedTrieNode_phrase_location, 0, 0}, +  {(char *)"suffix_link", __pyx_getprop_3_sa_16ExtendedTrieNode_suffix_link, __pyx_setprop_3_sa_16ExtendedTrieNode_suffix_link, 0, 0}, +  {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_3_sa_ExtendedTrieNode = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.ExtendedTrieNode"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_ExtendedTrieNode), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa_ExtendedTrieNode, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa_ExtendedTrieNode, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_ExtendedTrieNode, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa_ExtendedTrieNode, /*tp_methods*/ +  0, /*tp_members*/ +  __pyx_getsets_3_sa_ExtendedTrieNode, /*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_3_sa_ExtendedTrieNode, /*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_3_sa_TrieMap __pyx_vtable_3_sa_TrieMap; -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_24_fmt_rule = { -  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 PyObject *__pyx_tp_new_3_sa_TrieMap(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_TrieMap *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_TrieMap *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_TrieMap; +  if (unlikely(__pyx_pw_3_sa_7TrieMap_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_24_fmt_rule = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; +static void __pyx_tp_dealloc_3_sa_TrieMap(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_7TrieMap_3__dealloc__(o); +    if (PyErr_Occurred()) PyErr_WriteUnraisable(o); +    --Py_REFCNT(o); +    PyErr_Restore(etype, eval, etb); +  } +  (*Py_TYPE(o)->tp_free)(o); +} -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_24_fmt_rule = { -  #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 +static PyMethodDef __pyx_methods_3_sa_TrieMap[] = { +  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_5insert, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("contains"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_7contains, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("toMap"), (PyCFunction)__pyx_pw_3_sa_7TrieMap_9toMap, METH_O, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0}  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = { +static PyTypeObject __pyx_type_3_sa_TrieMap = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_24_fmt_rule"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.TrieMap"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_TrieMap), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_TrieMap, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -78020,24 +73939,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_24_fmt_rule, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_24_fmt_rule, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_24_fmt_rule, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_24_fmt_rule, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_methods*/ +  __pyx_methods_3_sa_TrieMap, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -78047,7 +73966,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_24_fmt_rule, /*tp_new*/ +  __pyx_tp_new_3_sa_TrieMap, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -78061,163 +73980,129 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_24_fmt_rule = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o); +static struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_8_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o);    p->__pyx_outer_scope = 0; -  p->__pyx_v_packed = 0; +  p->__pyx_v_arc = 0; +  p->__pyx_v_dist = 0; +  p->__pyx_v_node = 0; +  p->__pyx_v_sym = 0; +  p->__pyx_v_weight = 0;    p->__pyx_t_0 = 0; +  p->__pyx_t_3 = 0; +  p->__pyx_t_4 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_packed); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_arc); +  Py_CLEAR(p->__pyx_v_dist); +  Py_CLEAR(p->__pyx_v_node); +  Py_CLEAR(p->__pyx_v_sym); +  Py_CLEAR(p->__pyx_v_weight); +  Py_CLEAR(p->__pyx_t_0); +  Py_CLEAR(p->__pyx_t_3); +  Py_CLEAR(p->__pyx_t_4); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_8_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o;    if (p->__pyx_outer_scope) {      e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->__pyx_v_packed) { -    e = (*v)(p->__pyx_v_packed, a); if (e) return e; +  if (p->__pyx_v_arc) { +    e = (*v)(p->__pyx_v_arc, a); if (e) return e; +  } +  if (p->__pyx_v_dist) { +    e = (*v)(p->__pyx_v_dist, a); if (e) return e; +  } +  if (p->__pyx_v_node) { +    e = (*v)(p->__pyx_v_node, a); if (e) return e; +  } +  if (p->__pyx_v_sym) { +    e = (*v)(p->__pyx_v_sym, a); if (e) return e; +  } +  if (p->__pyx_v_weight) { +    e = (*v)(p->__pyx_v_weight, a); if (e) return e;    }    if (p->__pyx_t_0) {      e = (*v)(p->__pyx_t_0, a); if (e) return e;    } +  if (p->__pyx_t_3) { +    e = (*v)(p->__pyx_t_3, a); if (e) return e; +  } +  if (p->__pyx_t_4) { +    e = (*v)(p->__pyx_t_4, a); if (e) return e; +  }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr *)o;    PyObject* tmp;    tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_24_fmt_rule *)Py_None); Py_INCREF(Py_None); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_7_decode_lattice *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_packed); -  p->__pyx_v_packed = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_arc); +  p->__pyx_v_arc = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_dist); +  p->__pyx_v_dist = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_node); +  p->__pyx_v_node = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_sym); +  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_weight); +  p->__pyx_v_weight = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_0);    p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_3); +  p->__pyx_t_3 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_4); +  p->__pyx_t_4 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_25_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_8_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_25_genexpr = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_25_genexpr = { -  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___pyx_scope_struct_25_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_25_genexpr = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = { +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_8_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_25_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_25_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_8_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_8_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_25_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_8_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -78227,24 +74112,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_25_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_25_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_25_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_25_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_25_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_25_genexpr, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_8_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_8_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_25_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_8_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -78254,7 +74139,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_25_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_8_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -78268,138 +74153,183 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_25_genexpr = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o); -  p->__pyx_v_extract = 0; -  p->__pyx_v_f_len = 0; -  p->__pyx_v_f_words = 0; -  p->__pyx_v_phrases = 0; -  p->__pyx_v_self = 0; +static struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *__pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_4_make_lattice(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[--__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o); +  p->__pyx_v_word_ids = 0; +  p->__pyx_v_words = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o; -  Py_XDECREF(p->__pyx_v_extract); -  Py_XDECREF(p->__pyx_v_f_len); -  Py_XDECREF(p->__pyx_v_f_words); -  Py_XDECREF(p->__pyx_v_phrases); -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_word_ids); +  Py_CLEAR(p->__pyx_v_words); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice))) { +    __pyx_freelist_3_sa___pyx_scope_struct_4_make_lattice[__pyx_freecount_3_sa___pyx_scope_struct_4_make_lattice++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o; -  if (p->__pyx_v_extract) { -    e = (*v)(p->__pyx_v_extract, a); if (e) return e; -  } -  if (p->__pyx_v_f_len) { -    e = (*v)(p->__pyx_v_f_len, a); if (e) return e; -  } -  if (p->__pyx_v_f_words) { -    e = (*v)(p->__pyx_v_f_words, a); if (e) return e; -  } -  if (p->__pyx_v_phrases) { -    e = (*v)(p->__pyx_v_phrases, a); if (e) return e; +  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o; +  if (p->__pyx_v_word_ids) { +    e = (*v)(p->__pyx_v_word_ids, a); if (e) return e;    } -  if (p->__pyx_v_self) { -    e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e; +  if (p->__pyx_v_words) { +    e = (*v)(p->__pyx_v_words, a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *p = (struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *p = (struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)o;    PyObject* tmp; -  tmp = ((PyObject*)p->__pyx_v_extract); -  p->__pyx_v_extract = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_f_len); -  p->__pyx_v_f_len = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_f_words); -  p->__pyx_v_f_words = Py_None; Py_INCREF(Py_None); -  Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_phrases); -  p->__pyx_v_phrases = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_word_ids); +  p->__pyx_v_word_ids = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_HieroCachingRuleFactory *)Py_None); Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v_words); +  p->__pyx_v_words = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_26_get_f_phrases = { -  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*/ +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_4_make_lattice = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_4_make_lattice"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_4_make_lattice, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_4_make_lattice, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_4_make_lattice, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa___pyx_scope_struct_4_make_lattice, /*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_3_sa___pyx_scope_struct_4_make_lattice, /*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_3_sa_Phrase __pyx_vtable_3_sa_Phrase; -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_26_get_f_phrases = { -  0, /*sq_length*/ +static PyObject *__pyx_tp_new_3_sa_Phrase(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_Phrase *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_Phrase *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_Phrase; +  if (unlikely(__pyx_pw_3_sa_6Phrase_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} + +static void __pyx_tp_dealloc_3_sa_Phrase(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_6Phrase_3__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_sq_item_3_sa_Phrase(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_3_sa_6Phrase_words(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_6Phrase_5words_1__get__(o); +} + +static PyMethodDef __pyx_methods_3_sa_Phrase[] = { +  {__Pyx_NAMESTR("handle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_7handle, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_3_sa_6Phrase_6handle)}, +  {__Pyx_NAMESTR("strhandle"), (PyCFunction)__pyx_pw_3_sa_6Phrase_9strhandle, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("arity"), (PyCFunction)__pyx_pw_3_sa_6Phrase_11arity, METH_NOARGS, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("getvarpos"), (PyCFunction)__pyx_pw_3_sa_6Phrase_13getvarpos, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("getvar"), (PyCFunction)__pyx_pw_3_sa_6Phrase_15getvar, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("clen"), (PyCFunction)__pyx_pw_3_sa_6Phrase_17clen, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("getchunk"), (PyCFunction)__pyx_pw_3_sa_6Phrase_19getchunk, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("subst"), (PyCFunction)__pyx_pw_3_sa_6Phrase_32subst, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_3_sa_Phrase[] = { +  {(char *)"words", __pyx_getprop_3_sa_6Phrase_words, 0, 0, 0}, +  {0, 0, 0, 0, 0} +}; + +static PySequenceMethods __pyx_tp_as_sequence_Phrase = { +  __pyx_pw_3_sa_6Phrase_25__len__, /*sq_length*/    0, /*sq_concat*/    0, /*sq_repeat*/ -  0, /*sq_item*/ +  __pyx_sq_item_3_sa_Phrase, /*sq_item*/    0, /*sq_slice*/    0, /*sq_ass_item*/    0, /*sq_ass_slice*/ @@ -78408,68 +74338,47 @@ static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_26_get_f_phrase    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_26_get_f_phrases = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ +static PyMappingMethods __pyx_tp_as_mapping_Phrase = { +  __pyx_pw_3_sa_6Phrase_25__len__, /*mp_length*/ +  __pyx_pw_3_sa_6Phrase_27__getitem__, /*mp_subscript*/    0, /*mp_ass_subscript*/  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_26_get_f_phrases = { -  #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 -}; - -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases = { +static PyTypeObject __pyx_type_3_sa_Phrase = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_26_get_f_phrases"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_26_get_f_phrases), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.Phrase"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_Phrase), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_Phrase, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*tp_compare*/ +  __pyx_pw_3_sa_6Phrase_21__cmp__, /*tp_compare*/    #else    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_26_get_f_phrases, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_26_get_f_phrases, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_26_get_f_phrases, /*tp_as_mapping*/ -  0, /*tp_hash*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_Phrase, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_Phrase, /*tp_as_mapping*/ +  __pyx_pw_3_sa_6Phrase_23__hash__, /*tp_hash*/    0, /*tp_call*/ -  0, /*tp_str*/ +  __pyx_pw_3_sa_6Phrase_5__str__, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_26_get_f_phrases, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/ -  0, /*tp_iter*/ +  __pyx_pw_3_sa_6Phrase_29__iter__, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_methods*/ +  __pyx_methods_3_sa_Phrase, /*tp_methods*/    0, /*tp_members*/ -  0, /*tp_getset*/ +  __pyx_getsets_3_sa_Phrase, /*tp_getset*/    0, /*tp_base*/    0, /*tp_dict*/    0, /*tp_descr_get*/ @@ -78477,7 +74386,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_26_get_f_phrases, /*tp_new*/ +  __pyx_tp_new_3_sa_Phrase, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -78491,10 +74400,21 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *t, PyObject *a, PyObject *k) { +static struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *__pyx_freelist_3_sa___pyx_scope_struct_27___iter__[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_27___iter__ = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {    struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_27___iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_27___iter__[--__pyx_freecount_3_sa___pyx_scope_struct_27___iter__]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  }    p = ((struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o);    p->__pyx_v_self = 0;    return o; @@ -78502,8 +74422,13 @@ static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_27___iter__(PyTypeObject *  static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_27___iter__(PyObject *o) {    struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_27___iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__))) { +    __pyx_freelist_3_sa___pyx_scope_struct_27___iter__[__pyx_freecount_3_sa___pyx_scope_struct_27___iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_27___iter__ *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  }  static int __pyx_tp_traverse_3_sa___pyx_scope_struct_27___iter__(PyObject *o, visitproc v, void *a) { @@ -78528,104 +74453,6 @@ static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_27___iter__[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_27___iter__ = { -  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, /*nb_long*/ -  #else -  0, /*reserved*/ -  #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ -  #endif -}; - -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_27___iter__ = { -  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___pyx_scope_struct_27___iter__ = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_27___iter__ = { -  #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 -}; -  static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_27___iter__ = {    PyVarObject_HEAD_INIT(0, 0)    __Pyx_NAMESTR("_sa.__pyx_scope_struct_27___iter__"), /*tp_name*/ @@ -78641,16 +74468,16 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_27___iter__ = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_27___iter__, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_27___iter__, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_27___iter__, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_27___iter__, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/    __pyx_tp_traverse_3_sa___pyx_scope_struct_27___iter__, /*tp_traverse*/    __pyx_tp_clear_3_sa___pyx_scope_struct_27___iter__, /*tp_clear*/ @@ -78682,147 +74509,336 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_27___iter__ = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_28___str__(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o); +static struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *__pyx_freelist_3_sa___pyx_scope_struct____iter__[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct____iter__ = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct____iter__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct____iter__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct____iter__[--__pyx_freecount_3_sa___pyx_scope_struct____iter__]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o);    p->__pyx_v_self = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o; -  Py_XDECREF(((PyObject *)p->__pyx_v_self)); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_v_self); +  if ((__pyx_freecount_3_sa___pyx_scope_struct____iter__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__))) { +    __pyx_freelist_3_sa___pyx_scope_struct____iter__[__pyx_freecount_3_sa___pyx_scope_struct____iter__++] = ((struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o;    if (p->__pyx_v_self) {      e = (*v)(((PyObject*)p->__pyx_v_self), a); if (e) return e;    }    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct____iter__(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *p = (struct __pyx_obj_3_sa___pyx_scope_struct____iter__ *)o;    PyObject* tmp;    tmp = ((PyObject*)p->__pyx_v_self); -  p->__pyx_v_self = ((struct __pyx_obj_3_sa_FeatureVector *)Py_None); Py_INCREF(Py_None); +  p->__pyx_v_self = ((struct __pyx_obj_3_sa_IntList *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp);    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_28___str__[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct____iter__[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_28___str__ = { -  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*/ +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct____iter__ = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.__pyx_scope_struct____iter__"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct____iter__), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct____iter__, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct____iter__, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct____iter__, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa___pyx_scope_struct____iter__, /*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_3_sa___pyx_scope_struct____iter__, /*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 PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_28___str__ = { -  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 PyObject *__pyx_tp_new_3_sa_TrieTable(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_TrieTable *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_TrieTable *)o); +  p->root = Py_None; Py_INCREF(Py_None); +  if (unlikely(__pyx_pw_3_sa_9TrieTable_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} + +static void __pyx_tp_dealloc_3_sa_TrieTable(PyObject *o) { +  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->root); +  (*Py_TYPE(o)->tp_free)(o); +} + +static int __pyx_tp_traverse_3_sa_TrieTable(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; +  if (p->root) { +    e = (*v)(p->root, a); if (e) return e; +  } +  return 0; +} + +static int __pyx_tp_clear_3_sa_TrieTable(PyObject *o) { +  struct __pyx_obj_3_sa_TrieTable *p = (struct __pyx_obj_3_sa_TrieTable *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->root); +  p->root = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} + +static PyObject *__pyx_getprop_3_sa_9TrieTable_extended(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9TrieTable_8extended_1__get__(o); +} + +static int __pyx_setprop_3_sa_9TrieTable_extended(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_9TrieTable_8extended_3__set__(o, v); +  } +  else { +    PyErr_SetString(PyExc_NotImplementedError, "__del__"); +    return -1; +  } +} + +static PyObject *__pyx_getprop_3_sa_9TrieTable_count(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9TrieTable_5count_1__get__(o); +} + +static int __pyx_setprop_3_sa_9TrieTable_count(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_9TrieTable_5count_3__set__(o, v); +  } +  else { +    PyErr_SetString(PyExc_NotImplementedError, "__del__"); +    return -1; +  } +} + +static PyObject *__pyx_getprop_3_sa_9TrieTable_root(PyObject *o, CYTHON_UNUSED void *x) { +  return __pyx_pw_3_sa_9TrieTable_4root_1__get__(o); +} + +static int __pyx_setprop_3_sa_9TrieTable_root(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +  if (v) { +    return __pyx_pw_3_sa_9TrieTable_4root_3__set__(o, v); +  } +  else { +    return __pyx_pw_3_sa_9TrieTable_4root_5__del__(o); +  } +} + +static PyMethodDef __pyx_methods_3_sa_TrieTable[] = { +  {0, 0, 0, 0}  }; -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_28___str__ = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ +static struct PyGetSetDef __pyx_getsets_3_sa_TrieTable[] = { +  {(char *)"extended", __pyx_getprop_3_sa_9TrieTable_extended, __pyx_setprop_3_sa_9TrieTable_extended, 0, 0}, +  {(char *)"count", __pyx_getprop_3_sa_9TrieTable_count, __pyx_setprop_3_sa_9TrieTable_count, 0, 0}, +  {(char *)"root", __pyx_getprop_3_sa_9TrieTable_root, __pyx_setprop_3_sa_9TrieTable_root, 0, 0}, +  {0, 0, 0, 0, 0}  }; -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_28___str__ = { -  #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 +static PyTypeObject __pyx_type_3_sa_TrieTable = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.TrieTable"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_TrieTable), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa_TrieTable, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*bf_getcharbuffer*/ -  #endif -  #if PY_VERSION_HEX >= 0x02060000 -  0, /*bf_getbuffer*/ +  0, /*tp_compare*/ +  #else +  0, /*reserved*/    #endif +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa_TrieTable, /*tp_traverse*/ +  __pyx_tp_clear_3_sa_TrieTable, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa_TrieTable, /*tp_methods*/ +  0, /*tp_members*/ +  __pyx_getsets_3_sa_TrieTable, /*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_3_sa_TrieTable, /*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, /*bf_releasebuffer*/ +  0, /*tp_version_tag*/    #endif  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = { +static struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_5_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o); +  p->__pyx_outer_scope = 0; +  p->__pyx_v_word = 0; +  p->__pyx_t_0 = 0; +  return o; +} + +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v_word); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_5_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  } +} + +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) { +  int e; +  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; +  if (p->__pyx_outer_scope) { +    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; +  } +  if (p->__pyx_v_word) { +    e = (*v)(p->__pyx_v_word, a); if (e) return e; +  } +  if (p->__pyx_t_0) { +    e = (*v)(p->__pyx_t_0, a); if (e) return e; +  } +  return 0; +} + +static int __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr *)o; +  PyObject* tmp; +  tmp = ((PyObject*)p->__pyx_outer_scope); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_4_make_lattice *)Py_None); Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_word); +  p->__pyx_v_word = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_t_0); +  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  return 0; +} + +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_5_genexpr[] = { +  {0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_5_genexpr = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_28___str__"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_28___str__), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_5_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_5_genexpr), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_28___str__, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_5_genexpr, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -78832,24 +74848,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_28___str__, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_28___str__, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_28___str__, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_28___str__, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_28___str__, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_28___str__, /*tp_clear*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_5_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_5_genexpr, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_28___str__, /*tp_methods*/ +  __pyx_methods_3_sa___pyx_scope_struct_5_genexpr, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -78859,7 +74875,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_28___str__, /*tp_new*/ +  __pyx_tp_new_3_sa___pyx_scope_struct_5_genexpr, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -78873,33 +74889,54 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_28___str__ = {    #endif  }; -static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr(PyTypeObject *t, PyObject *a, PyObject *k) { -  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p; -  PyObject *o = (*t->tp_alloc)(t, 0); -  if (!o) return 0; -  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o); +static struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *__pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[8]; +static int __pyx_freecount_3_sa___pyx_scope_struct_10_genexpr = 0; + +static PyObject *__pyx_tp_new_3_sa___pyx_scope_struct_10_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p; +  PyObject *o; +  if (likely((__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr)))) { +    o = (PyObject*)__pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[--__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr]; +    memset(o, 0, sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr)); +    PyObject_INIT(o, t); +    PyObject_GC_Track(o); +  } else { +    o = (*t->tp_alloc)(t, 0); +    if (unlikely(!o)) return 0; +  } +  p = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o);    p->__pyx_outer_scope = 0; -  p->__pyx_v_feat = 0; +  p->__pyx_v__ = 0; +  p->__pyx_v_sym = 0;    p->__pyx_t_0 = 0;    return o;  } -static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o; -  Py_XDECREF(((PyObject *)p->__pyx_outer_scope)); -  Py_XDECREF(p->__pyx_v_feat); -  Py_XDECREF(p->__pyx_t_0); -  (*Py_TYPE(o)->tp_free)(o); +static void __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o; +  PyObject_GC_UnTrack(o); +  Py_CLEAR(p->__pyx_outer_scope); +  Py_CLEAR(p->__pyx_v__); +  Py_CLEAR(p->__pyx_v_sym); +  Py_CLEAR(p->__pyx_t_0); +  if ((__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr))) { +    __pyx_freelist_3_sa___pyx_scope_struct_10_genexpr[__pyx_freecount_3_sa___pyx_scope_struct_10_genexpr++] = ((struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o); +  } else { +    (*Py_TYPE(o)->tp_free)(o); +  }  } -static int __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr(PyObject *o, visitproc v, void *a) {    int e; -  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o; +  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o;    if (p->__pyx_outer_scope) {      e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;    } -  if (p->__pyx_v_feat) { -    e = (*v)(p->__pyx_v_feat, a); if (e) return e; +  if (p->__pyx_v__) { +    e = (*v)(p->__pyx_v__, a); if (e) return e; +  } +  if (p->__pyx_v_sym) { +    e = (*v)(p->__pyx_v_sym, a); if (e) return e;    }    if (p->__pyx_t_0) {      e = (*v)(p->__pyx_t_0, a); if (e) return e; @@ -78907,14 +74944,17 @@ static int __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr(PyObject *o, vis    return 0;  } -static int __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) { -  struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr *)o; +static int __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr(PyObject *o) { +  struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr *)o;    PyObject* tmp;    tmp = ((PyObject*)p->__pyx_outer_scope); -  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_28___str__ *)Py_None); Py_INCREF(Py_None); +  p->__pyx_outer_scope = ((struct __pyx_obj_3_sa___pyx_scope_struct_9_decode_sentence *)Py_None); Py_INCREF(Py_None);    Py_XDECREF(tmp); -  tmp = ((PyObject*)p->__pyx_v_feat); -  p->__pyx_v_feat = Py_None; Py_INCREF(Py_None); +  tmp = ((PyObject*)p->__pyx_v__); +  p->__pyx_v__ = Py_None; Py_INCREF(Py_None); +  Py_XDECREF(tmp); +  tmp = ((PyObject*)p->__pyx_v_sym); +  p->__pyx_v_sym = Py_None; Py_INCREF(Py_None);    Py_XDECREF(tmp);    tmp = ((PyObject*)p->__pyx_t_0);    p->__pyx_t_0 = Py_None; Py_INCREF(Py_None); @@ -78922,73 +74962,123 @@ static int __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr(PyObject *o) {    return 0;  } -static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_29_genexpr[] = { +static PyMethodDef __pyx_methods_3_sa___pyx_scope_struct_10_genexpr[] = {    {0, 0, 0, 0}  }; -static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct_29_genexpr = { -  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*/ +static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_10_genexpr = { +  PyVarObject_HEAD_INIT(0, 0) +  __Pyx_NAMESTR("_sa.__pyx_scope_struct_10_genexpr"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_10_genexpr), /*tp_basicsize*/ +  0, /*tp_itemsize*/ +  __pyx_tp_dealloc_3_sa___pyx_scope_struct_10_genexpr, /*tp_dealloc*/ +  0, /*tp_print*/ +  0, /*tp_getattr*/ +  0, /*tp_setattr*/    #if PY_MAJOR_VERSION < 3 -  0, /*nb_long*/ +  0, /*tp_compare*/    #else    0, /*reserved*/    #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_VERSION_HEX >= 0x02050000 -  0, /*nb_index*/ +  0, /*tp_repr*/ +  0, /*tp_as_number*/ +  0, /*tp_as_sequence*/ +  0, /*tp_as_mapping*/ +  0, /*tp_hash*/ +  0, /*tp_call*/ +  0, /*tp_str*/ +  0, /*tp_getattro*/ +  0, /*tp_setattro*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_doc*/ +  __pyx_tp_traverse_3_sa___pyx_scope_struct_10_genexpr, /*tp_traverse*/ +  __pyx_tp_clear_3_sa___pyx_scope_struct_10_genexpr, /*tp_clear*/ +  0, /*tp_richcompare*/ +  0, /*tp_weaklistoffset*/ +  0, /*tp_iter*/ +  0, /*tp_iternext*/ +  __pyx_methods_3_sa___pyx_scope_struct_10_genexpr, /*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_3_sa___pyx_scope_struct_10_genexpr, /*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_3_sa_FloatList __pyx_vtable_3_sa_FloatList; -static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_29_genexpr = { -  0, /*sq_length*/ +static PyObject *__pyx_tp_new_3_sa_FloatList(PyTypeObject *t, PyObject *a, PyObject *k) { +  struct __pyx_obj_3_sa_FloatList *p; +  PyObject *o; +  o = (*t->tp_alloc)(t, 0); +  if (unlikely(!o)) return 0; +  p = ((struct __pyx_obj_3_sa_FloatList *)o); +  p->__pyx_vtab = __pyx_vtabptr_3_sa_FloatList; +  if (unlikely(__pyx_pw_3_sa_9FloatList_1__cinit__(o, a, k) < 0)) { +    Py_DECREF(o); o = 0; +  } +  return o; +} + +static void __pyx_tp_dealloc_3_sa_FloatList(PyObject *o) { +  { +    PyObject *etype, *eval, *etb; +    PyErr_Fetch(&etype, &eval, &etb); +    ++Py_REFCNT(o); +    __pyx_pw_3_sa_9FloatList_3__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_sq_item_3_sa_FloatList(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_3_sa_FloatList(PyObject *o, PyObject *i, PyObject *v) { +  if (v) { +    return __pyx_pw_3_sa_9FloatList_7__setitem__(o, i, v); +  } +  else { +    PyErr_Format(PyExc_NotImplementedError, +      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name); +    return -1; +  } +} + +static PyMethodDef __pyx_methods_3_sa_FloatList[] = { +  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pw_3_sa_9FloatList_11append, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_3_sa_9FloatList_13write, METH_O, __Pyx_DOCSTR(0)}, +  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_3_sa_9FloatList_15read, METH_O, __Pyx_DOCSTR(0)}, +  {0, 0, 0, 0} +}; + +static PySequenceMethods __pyx_tp_as_sequence_FloatList = { +  __pyx_pw_3_sa_9FloatList_9__len__, /*sq_length*/    0, /*sq_concat*/    0, /*sq_repeat*/ -  0, /*sq_item*/ +  __pyx_sq_item_3_sa_FloatList, /*sq_item*/    0, /*sq_slice*/    0, /*sq_ass_item*/    0, /*sq_ass_slice*/ @@ -78997,39 +75087,18 @@ static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct_29_genexpr = {    0, /*sq_inplace_repeat*/  }; -static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct_29_genexpr = { -  0, /*mp_length*/ -  0, /*mp_subscript*/ -  0, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct_29_genexpr = { -  #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 +static PyMappingMethods __pyx_tp_as_mapping_FloatList = { +  __pyx_pw_3_sa_9FloatList_9__len__, /*mp_length*/ +  __pyx_pw_3_sa_9FloatList_5__getitem__, /*mp_subscript*/ +  __pyx_mp_ass_subscript_3_sa_FloatList, /*mp_ass_subscript*/  }; -static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_29_genexpr = { +static PyTypeObject __pyx_type_3_sa_FloatList = {    PyVarObject_HEAD_INIT(0, 0) -  __Pyx_NAMESTR("_sa.__pyx_scope_struct_29_genexpr"), /*tp_name*/ -  sizeof(struct __pyx_obj_3_sa___pyx_scope_struct_29_genexpr), /*tp_basicsize*/ +  __Pyx_NAMESTR("_sa.FloatList"), /*tp_name*/ +  sizeof(struct __pyx_obj_3_sa_FloatList), /*tp_basicsize*/    0, /*tp_itemsize*/ -  __pyx_tp_dealloc_3_sa___pyx_scope_struct_29_genexpr, /*tp_dealloc*/ +  __pyx_tp_dealloc_3_sa_FloatList, /*tp_dealloc*/    0, /*tp_print*/    0, /*tp_getattr*/    0, /*tp_setattr*/ @@ -79039,24 +75108,24 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_29_genexpr = {    0, /*reserved*/    #endif    0, /*tp_repr*/ -  &__pyx_tp_as_number___pyx_scope_struct_29_genexpr, /*tp_as_number*/ -  &__pyx_tp_as_sequence___pyx_scope_struct_29_genexpr, /*tp_as_sequence*/ -  &__pyx_tp_as_mapping___pyx_scope_struct_29_genexpr, /*tp_as_mapping*/ +  0, /*tp_as_number*/ +  &__pyx_tp_as_sequence_FloatList, /*tp_as_sequence*/ +  &__pyx_tp_as_mapping_FloatList, /*tp_as_mapping*/    0, /*tp_hash*/    0, /*tp_call*/    0, /*tp_str*/    0, /*tp_getattro*/    0, /*tp_setattro*/ -  &__pyx_tp_as_buffer___pyx_scope_struct_29_genexpr, /*tp_as_buffer*/ -  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ +  0, /*tp_as_buffer*/ +  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/    0, /*tp_doc*/ -  __pyx_tp_traverse_3_sa___pyx_scope_struct_29_genexpr, /*tp_traverse*/ -  __pyx_tp_clear_3_sa___pyx_scope_struct_29_genexpr, /*tp_clear*/ +  0, /*tp_traverse*/ +  0, /*tp_clear*/    0, /*tp_richcompare*/    0, /*tp_weaklistoffset*/    0, /*tp_iter*/    0, /*tp_iternext*/ -  __pyx_methods_3_sa___pyx_scope_struct_29_genexpr, /*tp_methods*/ +  __pyx_methods_3_sa_FloatList, /*tp_methods*/    0, /*tp_members*/    0, /*tp_getset*/    0, /*tp_base*/ @@ -79066,7 +75135,7 @@ static PyTypeObject __pyx_type_3_sa___pyx_scope_struct_29_genexpr = {    0, /*tp_dictoffset*/    0, /*tp_init*/    0, /*tp_alloc*/ -  __pyx_tp_new_3_sa___pyx_scope_struct_29_genexpr, /*tp_new*/ +  __pyx_tp_new_3_sa_FloatList, /*tp_new*/    0, /*tp_free*/    0, /*tp_is_gc*/    0, /*tp_bases*/ @@ -79086,7 +75155,11 @@ static PyMethodDef __pyx_methods[] = {  #if PY_MAJOR_VERSION >= 3  static struct PyModuleDef __pyx_moduledef = { +  #if PY_VERSION_HEX < 0x03020000 +    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, +  #else      PyModuleDef_HEAD_INIT, +  #endif      __Pyx_NAMESTR("_sa"),      0, /* m_doc */      -1, /* m_size */ @@ -79100,14 +75173,13 @@ static struct PyModuleDef __pyx_moduledef = {  static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0}, -  {&__pyx_kp_s_100, __pyx_k_100, sizeof(__pyx_k_100), 0, 0, 1, 0}, -  {&__pyx_kp_s_101, __pyx_k_101, sizeof(__pyx_k_101), 0, 0, 1, 0}, -  {&__pyx_n_s_103, __pyx_k_103, sizeof(__pyx_k_103), 0, 0, 1, 1}, -  {&__pyx_n_s_104, __pyx_k_104, sizeof(__pyx_k_104), 0, 0, 1, 1}, -  {&__pyx_kp_s_106, __pyx_k_106, sizeof(__pyx_k_106), 0, 0, 1, 0}, +  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0}, +  {&__pyx_kp_s_102, __pyx_k_102, sizeof(__pyx_k_102), 0, 0, 1, 0}, +  {&__pyx_kp_s_103, __pyx_k_103, sizeof(__pyx_k_103), 0, 0, 1, 0}, +  {&__pyx_n_s_105, __pyx_k_105, sizeof(__pyx_k_105), 0, 0, 1, 1}, +  {&__pyx_n_s_106, __pyx_k_106, sizeof(__pyx_k_106), 0, 0, 1, 1},    {&__pyx_kp_s_108, __pyx_k_108, sizeof(__pyx_k_108), 0, 0, 1, 0}, -  {&__pyx_kp_s_109, __pyx_k_109, sizeof(__pyx_k_109), 0, 0, 1, 0}, -  {&__pyx_kp_s_110, __pyx_k_110, sizeof(__pyx_k_110), 0, 0, 1, 0}, +  {&__pyx_n_s_110, __pyx_k_110, sizeof(__pyx_k_110), 0, 0, 1, 1},    {&__pyx_kp_s_111, __pyx_k_111, sizeof(__pyx_k_111), 0, 0, 1, 0},    {&__pyx_kp_s_112, __pyx_k_112, sizeof(__pyx_k_112), 0, 0, 1, 0},    {&__pyx_kp_s_113, __pyx_k_113, sizeof(__pyx_k_113), 0, 0, 1, 0}, @@ -79116,72 +75188,78 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_kp_s_116, __pyx_k_116, sizeof(__pyx_k_116), 0, 0, 1, 0},    {&__pyx_kp_s_117, __pyx_k_117, sizeof(__pyx_k_117), 0, 0, 1, 0},    {&__pyx_kp_s_118, __pyx_k_118, sizeof(__pyx_k_118), 0, 0, 1, 0}, -  {&__pyx_n_s_119, __pyx_k_119, sizeof(__pyx_k_119), 0, 0, 1, 1}, +  {&__pyx_kp_s_119, __pyx_k_119, sizeof(__pyx_k_119), 0, 0, 1, 0},    {&__pyx_kp_s_120, __pyx_k_120, sizeof(__pyx_k_120), 0, 0, 1, 0},    {&__pyx_kp_s_121, __pyx_k_121, sizeof(__pyx_k_121), 0, 0, 1, 0}, -  {&__pyx_n_s_123, __pyx_k_123, sizeof(__pyx_k_123), 0, 0, 1, 1}, -  {&__pyx_kp_s_124, __pyx_k_124, sizeof(__pyx_k_124), 0, 0, 1, 0}, +  {&__pyx_n_s_122, __pyx_k_122, sizeof(__pyx_k_122), 0, 0, 1, 1}, +  {&__pyx_kp_s_123, __pyx_k_123, sizeof(__pyx_k_123), 0, 0, 1, 0}, +  {&__pyx_n_s_124, __pyx_k_124, sizeof(__pyx_k_124), 0, 0, 1, 1},    {&__pyx_kp_s_125, __pyx_k_125, sizeof(__pyx_k_125), 0, 0, 1, 0}, -  {&__pyx_kp_s_126, __pyx_k_126, sizeof(__pyx_k_126), 0, 0, 1, 0}, -  {&__pyx_kp_s_127, __pyx_k_127, sizeof(__pyx_k_127), 0, 0, 1, 0}, -  {&__pyx_kp_s_128, __pyx_k_128, sizeof(__pyx_k_128), 0, 0, 1, 0}, +  {&__pyx_n_s_127, __pyx_k_127, sizeof(__pyx_k_127), 0, 0, 1, 1}, +  {&__pyx_n_s_128, __pyx_k_128, sizeof(__pyx_k_128), 0, 0, 1, 1},    {&__pyx_kp_s_129, __pyx_k_129, sizeof(__pyx_k_129), 0, 0, 1, 0}, -  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},    {&__pyx_kp_s_130, __pyx_k_130, sizeof(__pyx_k_130), 0, 0, 1, 0},    {&__pyx_kp_s_131, __pyx_k_131, sizeof(__pyx_k_131), 0, 0, 1, 0},    {&__pyx_kp_s_132, __pyx_k_132, sizeof(__pyx_k_132), 0, 0, 1, 0},    {&__pyx_kp_s_133, __pyx_k_133, sizeof(__pyx_k_133), 0, 0, 1, 0},    {&__pyx_kp_s_134, __pyx_k_134, sizeof(__pyx_k_134), 0, 0, 1, 0}, +  {&__pyx_kp_s_135, __pyx_k_135, sizeof(__pyx_k_135), 0, 0, 1, 0}, +  {&__pyx_kp_s_136, __pyx_k_136, sizeof(__pyx_k_136), 0, 0, 1, 0},    {&__pyx_kp_s_137, __pyx_k_137, sizeof(__pyx_k_137), 0, 0, 1, 0},    {&__pyx_kp_s_138, __pyx_k_138, sizeof(__pyx_k_138), 0, 0, 1, 0},    {&__pyx_kp_s_139, __pyx_k_139, sizeof(__pyx_k_139), 0, 0, 1, 0},    {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0}, -  {&__pyx_kp_s_140, __pyx_k_140, sizeof(__pyx_k_140), 0, 0, 1, 0}, -  {&__pyx_kp_s_142, __pyx_k_142, sizeof(__pyx_k_142), 0, 0, 1, 0}, -  {&__pyx_kp_s_146, __pyx_k_146, sizeof(__pyx_k_146), 0, 0, 1, 0}, -  {&__pyx_n_s_152, __pyx_k_152, sizeof(__pyx_k_152), 0, 0, 1, 1}, -  {&__pyx_kp_s_155, __pyx_k_155, sizeof(__pyx_k_155), 0, 0, 1, 0}, +  {&__pyx_kp_s_143, __pyx_k_143, sizeof(__pyx_k_143), 0, 0, 1, 0}, +  {&__pyx_n_s_144, __pyx_k_144, sizeof(__pyx_k_144), 0, 0, 1, 1}, +  {&__pyx_n_s_146, __pyx_k_146, sizeof(__pyx_k_146), 0, 0, 1, 1}, +  {&__pyx_kp_s_149, __pyx_k_149, sizeof(__pyx_k_149), 0, 0, 1, 0}, +  {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0}, +  {&__pyx_kp_s_150, __pyx_k_150, sizeof(__pyx_k_150), 0, 0, 1, 0}, +  {&__pyx_kp_s_151, __pyx_k_151, sizeof(__pyx_k_151), 0, 0, 1, 0}, +  {&__pyx_kp_s_153, __pyx_k_153, sizeof(__pyx_k_153), 0, 0, 1, 0},    {&__pyx_kp_s_157, __pyx_k_157, sizeof(__pyx_k_157), 0, 0, 1, 0}, -  {&__pyx_kp_s_160, __pyx_k_160, sizeof(__pyx_k_160), 0, 0, 1, 0}, -  {&__pyx_kp_s_164, __pyx_k_164, sizeof(__pyx_k_164), 0, 0, 1, 0}, -  {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0}, +  {&__pyx_n_s_163, __pyx_k_163, sizeof(__pyx_k_163), 0, 0, 1, 1}, +  {&__pyx_n_s_166, __pyx_k_166, sizeof(__pyx_k_166), 0, 0, 1, 1}, +  {&__pyx_kp_s_167, __pyx_k_167, sizeof(__pyx_k_167), 0, 0, 1, 0}, +  {&__pyx_kp_s_169, __pyx_k_169, sizeof(__pyx_k_169), 0, 0, 1, 0}, +  {&__pyx_kp_s_172, __pyx_k_172, sizeof(__pyx_k_172), 0, 0, 1, 0}, +  {&__pyx_kp_s_176, __pyx_k_176, sizeof(__pyx_k_176), 0, 0, 1, 0}, +  {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},    {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0}, -  {&__pyx_kp_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 0}, -  {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0}, -  {&__pyx_n_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 1}, +  {&__pyx_kp_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 0}, +  {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0}, +  {&__pyx_n_s_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 0, 1, 1},    {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0}, -  {&__pyx_kp_s_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 0, 1, 0}, -  {&__pyx_kp_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 0}, +  {&__pyx_kp_s_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 0, 1, 0}, +  {&__pyx_kp_s_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 0, 1, 0},    {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0}, -  {&__pyx_kp_s_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 1, 0}, -  {&__pyx_kp_s_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 0, 1, 0}, -  {&__pyx_kp_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 0}, +  {&__pyx_kp_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 0}, +  {&__pyx_kp_s_47, __pyx_k_47, sizeof(__pyx_k_47), 0, 0, 1, 0},    {&__pyx_kp_s_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 0, 1, 0},    {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},    {&__pyx_kp_s_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 0, 1, 0},    {&__pyx_kp_s_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 0, 1, 0}, -  {&__pyx_kp_s_56, __pyx_k_56, sizeof(__pyx_k_56), 0, 0, 1, 0}, +  {&__pyx_kp_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 0},    {&__pyx_kp_s_58, __pyx_k_58, sizeof(__pyx_k_58), 0, 0, 1, 0}, -  {&__pyx_kp_s_59, __pyx_k_59, sizeof(__pyx_k_59), 0, 0, 1, 0},    {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},    {&__pyx_kp_s_60, __pyx_k_60, sizeof(__pyx_k_60), 0, 0, 1, 0}, +  {&__pyx_kp_s_61, __pyx_k_61, sizeof(__pyx_k_61), 0, 0, 1, 0},    {&__pyx_kp_s_62, __pyx_k_62, sizeof(__pyx_k_62), 0, 0, 1, 0},    {&__pyx_kp_s_64, __pyx_k_64, sizeof(__pyx_k_64), 0, 0, 1, 0}, -  {&__pyx_kp_s_65, __pyx_k_65, sizeof(__pyx_k_65), 0, 0, 1, 0},    {&__pyx_kp_s_66, __pyx_k_66, sizeof(__pyx_k_66), 0, 0, 1, 0},    {&__pyx_kp_s_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 0, 1, 0},    {&__pyx_kp_s_68, __pyx_k_68, sizeof(__pyx_k_68), 0, 0, 1, 0},    {&__pyx_kp_s_69, __pyx_k_69, sizeof(__pyx_k_69), 0, 0, 1, 0},    {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0}, -  {&__pyx_n_s_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 0, 1, 1}, -  {&__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_s_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 0, 1, 0}, +  {&__pyx_kp_s_71, __pyx_k_71, sizeof(__pyx_k_71), 0, 0, 1, 0}, +  {&__pyx_n_s_72, __pyx_k_72, sizeof(__pyx_k_72), 0, 0, 1, 1}, +  {&__pyx_n_s_73, __pyx_k_73, sizeof(__pyx_k_73), 0, 0, 1, 1},    {&__pyx_kp_s_74, __pyx_k_74, sizeof(__pyx_k_74), 0, 0, 1, 0},    {&__pyx_kp_s_76, __pyx_k_76, sizeof(__pyx_k_76), 0, 0, 1, 0},    {&__pyx_kp_s_78, __pyx_k_78, sizeof(__pyx_k_78), 0, 0, 1, 0},    {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0}, -  {&__pyx_kp_s_83, __pyx_k_83, sizeof(__pyx_k_83), 0, 0, 1, 0}, -  {&__pyx_kp_s_84, __pyx_k_84, sizeof(__pyx_k_84), 0, 0, 1, 0}, +  {&__pyx_kp_s_80, __pyx_k_80, sizeof(__pyx_k_80), 0, 0, 1, 0},    {&__pyx_kp_s_85, __pyx_k_85, sizeof(__pyx_k_85), 0, 0, 1, 0},    {&__pyx_kp_s_86, __pyx_k_86, sizeof(__pyx_k_86), 0, 0, 1, 0},    {&__pyx_kp_s_87, __pyx_k_87, sizeof(__pyx_k_87), 0, 0, 1, 0}, @@ -79191,8 +75269,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_kp_s_90, __pyx_k_90, sizeof(__pyx_k_90), 0, 0, 1, 0},    {&__pyx_kp_s_91, __pyx_k_91, sizeof(__pyx_k_91), 0, 0, 1, 0},    {&__pyx_kp_s_92, __pyx_k_92, sizeof(__pyx_k_92), 0, 0, 1, 0}, +  {&__pyx_kp_s_93, __pyx_k_93, sizeof(__pyx_k_93), 0, 0, 1, 0},    {&__pyx_kp_s_94, __pyx_k_94, sizeof(__pyx_k_94), 0, 0, 1, 0}, -  {&__pyx_kp_s_95, __pyx_k_95, sizeof(__pyx_k_95), 0, 0, 1, 0}, +  {&__pyx_kp_s_96, __pyx_k_96, sizeof(__pyx_k_96), 0, 0, 1, 0}, +  {&__pyx_kp_s_97, __pyx_k_97, sizeof(__pyx_k_97), 0, 0, 1, 0},    {&__pyx_kp_s__0, __pyx_k__0, sizeof(__pyx_k__0), 0, 0, 1, 0},    {&__pyx_kp_s__1, __pyx_k__1, sizeof(__pyx_k__1), 0, 0, 1, 0},    {&__pyx_n_s__Counter, __pyx_k__Counter, sizeof(__pyx_k__Counter), 0, 0, 1, 1}, @@ -79211,21 +75291,25 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_n_s__RUSAGE_SELF, __pyx_k__RUSAGE_SELF, sizeof(__pyx_k__RUSAGE_SELF), 0, 0, 1, 1},    {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},    {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1}, +  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},    {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},    {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1}, +  {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 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____pyx_vtable__, __pyx_k____pyx_vtable__, sizeof(__pyx_k____pyx_vtable__), 0, 0, 1, 1},    {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},    {&__pyx_n_s___columns, __pyx_k___columns, sizeof(__pyx_k___columns), 0, 0, 1, 1},    {&__pyx_n_s___doquicksort, __pyx_k___doquicksort, sizeof(__pyx_k___doquicksort), 0, 0, 1, 1},    {&__pyx_n_s___sa, __pyx_k___sa, sizeof(__pyx_k___sa), 0, 0, 1, 1},    {&__pyx_n_s__a, __pyx_k__a, sizeof(__pyx_k__a), 0, 0, 1, 1}, -  {&__pyx_n_s__add, __pyx_k__add, sizeof(__pyx_k__add), 0, 0, 1, 1},    {&__pyx_n_s__advance, __pyx_k__advance, sizeof(__pyx_k__advance), 0, 0, 1, 1},    {&__pyx_n_s__al, __pyx_k__al, sizeof(__pyx_k__al), 0, 0, 1, 1},    {&__pyx_n_s__alignment, __pyx_k__alignment, sizeof(__pyx_k__alignment), 0, 0, 1, 1},    {&__pyx_n_s__alignments, __pyx_k__alignments, sizeof(__pyx_k__alignments), 0, 0, 1, 1},    {&__pyx_n_s__alphabet_size, __pyx_k__alphabet_size, sizeof(__pyx_k__alphabet_size), 0, 0, 1, 1}, +  {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1}, +  {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1},    {&__pyx_n_s__arity, __pyx_k__arity, sizeof(__pyx_k__arity), 0, 0, 1, 1},    {&__pyx_n_s__arr, __pyx_k__arr, sizeof(__pyx_k__arr), 0, 0, 1, 1},    {&__pyx_n_s__arr_high, __pyx_k__arr_high, sizeof(__pyx_k__arr_high), 0, 0, 1, 1}, @@ -79237,6 +75321,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_n_s__category, __pyx_k__category, sizeof(__pyx_k__category), 0, 0, 1, 1},    {&__pyx_n_s__chain, __pyx_k__chain, sizeof(__pyx_k__chain), 0, 0, 1, 1},    {&__pyx_n_s__children, __pyx_k__children, sizeof(__pyx_k__children), 0, 0, 1, 1}, +  {&__pyx_n_s__close, __pyx_k__close, sizeof(__pyx_k__close), 0, 0, 1, 1},    {&__pyx_n_s__cmp, __pyx_k__cmp, sizeof(__pyx_k__cmp), 0, 0, 1, 1},    {&__pyx_n_s__col, __pyx_k__col, sizeof(__pyx_k__col), 0, 0, 1, 1},    {&__pyx_n_s__collect, __pyx_k__collect, sizeof(__pyx_k__collect), 0, 0, 1, 1}, @@ -79406,6 +75491,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_n_s__scorer, __pyx_k__scorer, sizeof(__pyx_k__scorer), 0, 0, 1, 1},    {&__pyx_n_s__scores, __pyx_k__scores, sizeof(__pyx_k__scores), 0, 0, 1, 1},    {&__pyx_n_s__seek, __pyx_k__seek, sizeof(__pyx_k__seek), 0, 0, 1, 1}, +  {&__pyx_n_s__send, __pyx_k__send, sizeof(__pyx_k__send), 0, 0, 1, 1},    {&__pyx_n_s__set, __pyx_k__set, sizeof(__pyx_k__set), 0, 0, 1, 1},    {&__pyx_n_s__shortest, __pyx_k__shortest, sizeof(__pyx_k__shortest), 0, 0, 1, 1},    {&__pyx_n_s__side, __pyx_k__side, sizeof(__pyx_k__side), 0, 0, 1, 1}, @@ -79425,6 +75511,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {&__pyx_n_s__sym, __pyx_k__sym, sizeof(__pyx_k__sym), 0, 0, 1, 1},    {&__pyx_n_s__syms, __pyx_k__syms, sizeof(__pyx_k__syms), 0, 0, 1, 1},    {&__pyx_n_s__test_sentence, __pyx_k__test_sentence, sizeof(__pyx_k__test_sentence), 0, 0, 1, 1}, +  {&__pyx_n_s__throw, __pyx_k__throw, sizeof(__pyx_k__throw), 0, 0, 1, 1},    {&__pyx_n_s__tight_phrases, __pyx_k__tight_phrases, sizeof(__pyx_k__tight_phrases), 0, 0, 1, 1},    {&__pyx_n_s__toMap, __pyx_k__toMap, sizeof(__pyx_k__toMap), 0, 0, 1, 1},    {&__pyx_n_s__train_min_gap_size, __pyx_k__train_min_gap_size, sizeof(__pyx_k__train_min_gap_size), 0, 0, 1, 1}, @@ -79450,18 +75537,19 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {    {0, 0, 0, 0, 0, 0, 0}  };  static int __Pyx_InitCachedBuiltins(void) { -  __pyx_builtin_open = __Pyx_GetName(__pyx_b, __pyx_n_s__open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __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[1]; __pyx_lineno = 28; __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[2]; __pyx_lineno = 23; __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[2]; __pyx_lineno = 109; __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[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_builtin_map = __Pyx_GetName(__pyx_b, __pyx_n_s__map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __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[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_builtin_zip = __Pyx_GetName(__pyx_b, __pyx_n_s__zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __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[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_builtin_cmp = __Pyx_GetName(__pyx_b, __pyx_n_s__cmp); if (!__pyx_builtin_cmp) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_builtin_sorted = __Pyx_GetName(__pyx_b, __pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_builtin_max = __Pyx_GetName(__pyx_b, __pyx_n_s__max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s__open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s__map); if (!__pyx_builtin_map) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s__zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_cmp = __Pyx_GetBuiltinName(__pyx_n_s__cmp); if (!__pyx_builtin_cmp) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_sorted = __Pyx_GetBuiltinName(__pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s__max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    return 0;    __pyx_L1_error:;    return -1; @@ -79471,994 +75559,710 @@ static int __Pyx_InitCachedConstants(void) {    __Pyx_RefNannyDeclarations    __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":20 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":20   *         self.word2id = {"END_OF_FILE":0, "END_OF_LINE":1}   *         self.id2word = ["END_OF_FILE", "END_OF_LINE"]   *         self.data = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_id = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)   */ -  __pyx_k_tuple_10 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_10); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_10, 0, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_10, 1, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10)); +  __pyx_k_tuple_11 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_11); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":21 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":21   *         self.id2word = ["END_OF_FILE", "END_OF_LINE"]   *         self.data = IntList(1000,1000)   *         self.sent_id = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_index = IntList(1000,1000)   *         self.use_sent_id = use_sent_id   */ -  __pyx_k_tuple_11 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_11); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_11, 0, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_11, 1, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11)); +  __pyx_k_tuple_12 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_12); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":22 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":22   *         self.data = IntList(1000,1000)   *         self.sent_id = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.use_sent_id = use_sent_id   *         if from_binary:   */ -  __pyx_k_tuple_12 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_12); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_12, 0, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_12, 1, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12)); +  __pyx_k_tuple_13 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_13); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":66 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":66   *                     f.write("%s " % self.get_word(w_id))   *                 if w_id == 1:   *                     f.write("\n")             # <<<<<<<<<<<<<<   *    *     def read_text(self, char* filename):   */ -  __pyx_k_tuple_15 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_15); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_15, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15)); +  __pyx_k_tuple_16 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_16); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":61 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":61   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             for w_id in self.data:   *                 if w_id > 1:   */ -  __pyx_k_tuple_16 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_16); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_16, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_16, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16)); +  __pyx_k_tuple_17 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_17); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":69 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":69   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<<   *             self.read_text_data(fp)   *    */ -  __pyx_k_tuple_17 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_17); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_17, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_17, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_17, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17)); +  __pyx_k_tuple_18 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_18); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":74 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":74   *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:   *             data = (line.split(' ||| ')[side] for line in fp)             # <<<<<<<<<<<<<<   *             self.read_text_data(data)   *    */ -  __pyx_k_tuple_19 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_19); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_18)); -  PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, ((PyObject *)__pyx_kp_s_18)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_18)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19)); +  __pyx_k_tuple_20 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_19)); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_20); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":73 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":73   *    *     def read_bitext(self, char* filename, int side):   *         with gzip_or_text(filename) as fp:             # <<<<<<<<<<<<<<   *             data = (line.split(' ||| ')[side] for line in fp)   *             self.read_text_data(data)   */ -  __pyx_k_tuple_20 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_20); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_20, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_20, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20)); +  __pyx_k_tuple_21 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_21); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":144 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":130 + *         num_words = len(self.id2word) - 2 + *         fwrite(&(num_words), sizeof(int), 1, f) + *         for word in self.id2word[2:]:             # <<<<<<<<<<<<<< + *             word_len = len(word) + 1 + *             fwrite(&(word_len), sizeof(int), 1, f) + */ +  __pyx_k_slice_22 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_k_slice_22)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_slice_22); +  __Pyx_GIVEREF(__pyx_k_slice_22); + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":144   *         for i in self.data:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for i in self.sent_index:   *             f.write("%d " %i)   */ -  __pyx_k_tuple_22 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_22); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_22, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22)); +  __pyx_k_tuple_24 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_24); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":147 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":147   *         for i in self.sent_index:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for i in self.sent_id:   *             f.write("%d " %i)   */ -  __pyx_k_tuple_23 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_23); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_23, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23)); +  __pyx_k_tuple_25 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_25); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":150 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":150   *         for i in self.sent_id:   *             f.write("%d " %i)   *         f.write("\n")             # <<<<<<<<<<<<<<   *         for word in self.id2word:   *             f.write("%s %d " % (word, self.word2id[word]))   */ -  __pyx_k_tuple_24 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_24); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_24, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24)); +  __pyx_k_tuple_26 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_26); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":153 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":153   *         for word in self.id2word:   *             f.write("%s %d " % (word, self.word2id[word]))   *         f.write("\n")             # <<<<<<<<<<<<<<   *    *     def write_enhanced(self, char* filename):   */ -  __pyx_k_tuple_26 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_26); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_26, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26)); +  __pyx_k_tuple_28 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_28); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28)); -  /* "/home/paulb/workspace/cdec/python/src/sa/data_array.pxi":156 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/data_array.pxi":156   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             self.write_enhanced_handle(self, f)   */ -  __pyx_k_tuple_28 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_28); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_28, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_28, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_28, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28)); +  __pyx_k_tuple_30 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_30); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":46 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":48   *    *     def __cinit__(self, from_binary=None, from_text=None):   *         self.links = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         self.sent_index = IntList(1000,1000)   *         if from_binary:   */ -  __pyx_k_tuple_29 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_29); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_29, 0, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_29, 1, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29)); +  __pyx_k_tuple_31 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_31); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":47 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":49   *     def __cinit__(self, from_binary=None, from_text=None):   *         self.links = IntList(1000,1000)   *         self.sent_index = IntList(1000,1000)             # <<<<<<<<<<<<<<   *         if from_binary:   *             self.read_binary(from_binary)   */ -  __pyx_k_tuple_30 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_30); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_30, 0, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_INCREF(__pyx_int_1000); -  PyTuple_SET_ITEM(__pyx_k_tuple_30, 1, __pyx_int_1000); -  __Pyx_GIVEREF(__pyx_int_1000); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30)); +  __pyx_k_tuple_32 = PyTuple_Pack(2, __pyx_int_1000, __pyx_int_1000); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_32); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":59 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":61   *                 pairs = line.split()   *                 for pair in pairs:   *                     (i, j) = map(int, pair.split('-'))             # <<<<<<<<<<<<<<   *                     self.links.append(self.link(i, j))   *             self.sent_index.append(len(self.links))   */ -  __pyx_k_tuple_32 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_32); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_31)); -  PyTuple_SET_ITEM(__pyx_k_tuple_32, 0, ((PyObject *)__pyx_kp_s_31)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_31)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32)); +  __pyx_k_tuple_34 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_33)); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_34); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":56   *    *     def read_text(self, char* filename):   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<<   *             for line in f:   *                 self.sent_index.append(len(self.links))   */ -  __pyx_k_tuple_33 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_33); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_33, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_33, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_33, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33)); +  __pyx_k_tuple_35 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_35); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":75 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":77   *             for i, link in enumerate(self.links):   *                 while i >= self.sent_index[sent_num]:   *                     f.write("\n")             # <<<<<<<<<<<<<<   *                     sent_num = sent_num + 1   *                 f.write("%d-%d " % self.unlink(link))   */ -  __pyx_k_tuple_34 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_34); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_34, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34)); +  __pyx_k_tuple_36 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_36); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":78 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":80   *                     sent_num = sent_num + 1   *                 f.write("%d-%d " % self.unlink(link))   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     def write_binary(self, char* filename):   */ -  __pyx_k_tuple_36 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_36); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_36, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36)); +  __pyx_k_tuple_38 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_38); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":71 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":73   *    *     def write_text(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             sent_num = 0   *             for i, link in enumerate(self.links):   */ -  __pyx_k_tuple_37 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_37); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_37, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_37, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_37, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37)); +  __pyx_k_tuple_39 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_39); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":92 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":94   *             for link in self.links:   *                 f.write("%d " % link)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i in self.sent_index:   *                 f.write("%d " % i)   */ -  __pyx_k_tuple_38 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_38); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_38, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38)); +  __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_40); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":95 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":97   *             for i in self.sent_index:   *                 f.write("%d " % i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     def alignment(self, i):   */ -  __pyx_k_tuple_39 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_39); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_39, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39)); +  __pyx_k_tuple_41 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_41)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_41); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_41)); -  /* "/home/paulb/workspace/cdec/python/src/sa/alignment.pxi":88 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":90   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             sent_num = 1   *             for link in self.links:   */ -  __pyx_k_tuple_40 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_40); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_40, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_40, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_40, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40)); +  __pyx_k_tuple_42 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_42)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_42); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_42)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":297 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":297   *    *             # Re-read file, placing words into buckets   *             f.seek(0)             # <<<<<<<<<<<<<<   *             for line in f:   *                 (fword, eword, score1, score2) = line.split()   */ -  __pyx_k_tuple_43 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_43); -  __Pyx_INCREF(__pyx_int_0); -  PyTuple_SET_ITEM(__pyx_k_tuple_43, 0, __pyx_int_0); -  __Pyx_GIVEREF(__pyx_int_0); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_43)); +  __pyx_k_tuple_45 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_45); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":273 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":273   *    *         fcount = IntList()   *         with gzip_or_text(filename) as f:             # <<<<<<<<<<<<<<   *             # first loop merely establishes size of array objects   *             for line in f:   */ -  __pyx_k_tuple_44 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_44)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_44); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_44, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_44, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_44, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_44)); +  __pyx_k_tuple_46 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_46)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_46); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_46)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":339 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":339   *    *         if i > j:   *             raise Exception("Sort error in CLex")             # <<<<<<<<<<<<<<   *         if i == j: #empty interval   *             return   */ -  __pyx_k_tuple_47 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_47); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_46)); -  PyTuple_SET_ITEM(__pyx_k_tuple_47, 0, ((PyObject *)__pyx_kp_s_46)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_46)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47)); +  __pyx_k_tuple_49 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_48)); if (unlikely(!__pyx_k_tuple_49)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_49); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_49)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":362 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":362   *             for i in self.f_index:   *                 f.write("%d " % i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   *                 f.write("%d %f %f " % (i, s1, s2))   */ -  __pyx_k_tuple_49 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_49)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_49); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_49, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_49)); +  __pyx_k_tuple_51 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_51); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":365 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":365   *             for i, s1, s2 in zip(self.e_index, self.col1, self.col2):   *                 f.write("%d %f %f " % (i, s1, s2))   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, w in enumerate(self.id2fword):   *                 f.write("%d %s " % (i, w))   */ -  __pyx_k_tuple_51 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_51); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_51, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51)); +  __pyx_k_tuple_53 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_53)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_53); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_53)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":368 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":368   *             for i, w in enumerate(self.id2fword):   *                 f.write("%d %s " % (i, w))   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for i, w in enumerate(self.id2eword):   *                 f.write("%d %s " % (i, w))   */ -  __pyx_k_tuple_53 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_53)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_53); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_53, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_53)); +  __pyx_k_tuple_55 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_55); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_55)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":371 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":371   *             for i, w in enumerate(self.id2eword):   *                 f.write("%d %s " % (i, w))   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *    */ -  __pyx_k_tuple_54 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_54)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_54); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_54, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_54)); +  __pyx_k_tuple_56 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_56); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":359 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":359   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             for i in self.f_index:   *                 f.write("%d " % i)   */ -  __pyx_k_tuple_55 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_55); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_55, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_55, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_55, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_55)); +  __pyx_k_tuple_57 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_57); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57)); -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":404 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":404   *         cdef i, N, e_id, f_id   *    *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             N = len(self.e_index)   *             f_id = 0   */ -  __pyx_k_tuple_57 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_57); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_57, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_57, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_57, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57)); +  __pyx_k_tuple_59 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_59)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_59); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_59)); -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":13 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":13   *         cdef IntList rank   *    *         logger.info("Constructing LCP array")             # <<<<<<<<<<<<<<   *         self.sa = sa   *         n = self.sa.sa.len   */ -  __pyx_k_tuple_61 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_61)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_61); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_60)); -  PyTuple_SET_ITEM(__pyx_k_tuple_61, 0, ((PyObject *)__pyx_kp_s_60)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_60)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_61)); +  __pyx_k_tuple_63 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_62)); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_63); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63)); -  /* "/home/paulb/workspace/cdec/python/src/sa/lcp.pxi":34 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/lcp.pxi":34   *             if h > 0:   *                 h = h-1   *         logger.info("LCP array completed")             # <<<<<<<<<<<<<<   *    *     def compute_stats(self, int max_n):   */ -  __pyx_k_tuple_63 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_63); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_62)); -  PyTuple_SET_ITEM(__pyx_k_tuple_63, 0, ((PyObject *)__pyx_kp_s_62)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_62)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63)); +  __pyx_k_tuple_65 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_64)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_65); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":297 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":297   *         pattern_rank = {}   *    *         logger.info("Precomputing frequent intersections")             # <<<<<<<<<<<<<<   *         cdef float start_time = monitor_cpu()   *    */ -  __pyx_k_tuple_73 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_73)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_73); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_72)); -  PyTuple_SET_ITEM(__pyx_k_tuple_73, 0, ((PyObject *)__pyx_kp_s_72)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_72)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_73)); +  __pyx_k_tuple_75 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_74)); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_75); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":314 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":314   *         queue = IntList(increment=1000)   *    *         logger.info("    Computing inverted indexes...")             # <<<<<<<<<<<<<<   *         N = len(data)   *         for i from 0 <= i < N:   */ -  __pyx_k_tuple_75 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_75); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_74)); -  PyTuple_SET_ITEM(__pyx_k_tuple_75, 0, ((PyObject *)__pyx_kp_s_74)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_74)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75)); +  __pyx_k_tuple_77 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_76)); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_77); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":329 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":329   *                     trie_node_data_append(node, i)   *    *         logger.info("    Computing collocations...")             # <<<<<<<<<<<<<<   *         N = len(queue)   *         ptr1 = 0   */ -  __pyx_k_tuple_77 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_77); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_76)); -  PyTuple_SET_ITEM(__pyx_k_tuple_77, 0, ((PyObject *)__pyx_kp_s_76)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_76)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77)); +  __pyx_k_tuple_79 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_78)); if (unlikely(!__pyx_k_tuple_79)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_79); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_79)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":393 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":393   *             for pattern2 in J_set:   *                 if len(pattern1) + len(pattern2) + 1 < self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     J2_set.add(combined_pattern)   *    */ -  __pyx_k_tuple_79 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_79)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_79); -  __Pyx_INCREF(__pyx_int_neg_1); -  PyTuple_SET_ITEM(__pyx_k_tuple_79, 0, __pyx_int_neg_1); -  __Pyx_GIVEREF(__pyx_int_neg_1); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_79)); +  __pyx_k_tuple_81 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_81); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_81)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":400 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":400   *                 x = x+1   *                 if len(pattern1) + len(pattern2) + 1 <= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *    */ -  __pyx_k_tuple_80 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_80)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_80); -  __Pyx_INCREF(__pyx_int_neg_1); -  PyTuple_SET_ITEM(__pyx_k_tuple_80, 0, __pyx_int_neg_1); -  __Pyx_GIVEREF(__pyx_int_neg_1); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_80)); +  __pyx_k_tuple_82 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_82)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_82); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_82)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":407 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":407   *                 x = x+2   *                 if len(pattern1) + len(pattern2) + 1<= self.max_length:   *                     combined_pattern = pattern1 + (-1,) + pattern2             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *                     combined_pattern = pattern2 + (-1,) + pattern1   */ -  __pyx_k_tuple_81 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_81); -  __Pyx_INCREF(__pyx_int_neg_1); -  PyTuple_SET_ITEM(__pyx_k_tuple_81, 0, __pyx_int_neg_1); -  __Pyx_GIVEREF(__pyx_int_neg_1); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_81)); +  __pyx_k_tuple_83 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_83)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_83); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_83)); -  /* "/home/paulb/workspace/cdec/python/src/sa/precomputation.pxi":409 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/precomputation.pxi":409   *                     combined_pattern = pattern1 + (-1,) + pattern2   *                     IJ_set.add(combined_pattern)   *                     combined_pattern = pattern2 + (-1,) + pattern1             # <<<<<<<<<<<<<<   *                     IJ_set.add(combined_pattern)   *    */ -  __pyx_k_tuple_82 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_82)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_82); -  __Pyx_INCREF(__pyx_int_neg_1); -  PyTuple_SET_ITEM(__pyx_k_tuple_82, 0, __pyx_int_neg_1); -  __Pyx_GIVEREF(__pyx_int_neg_1); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_82)); +  __pyx_k_tuple_84 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_84)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_84); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_84)); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":94 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":94   *    *         '''Step 3: read off suffix array from inverse suffix array'''   *         logger.info("    Finalizing sort...")             # <<<<<<<<<<<<<<   *         for i from 0 <= i < N:   *             j = isa.arr[i]   */ -  __pyx_k_tuple_93 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_93)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_93); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_92)); -  PyTuple_SET_ITEM(__pyx_k_tuple_93, 0, ((PyObject *)__pyx_kp_s_92)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_92)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_93)); +  __pyx_k_tuple_95 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_94)); if (unlikely(!__pyx_k_tuple_95)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_95); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_95)); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":193 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":193   *             for a_i in self.sa:   *                 f.write("%d " % a_i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *             for w_i in self.ha:   *                 f.write("%d " % w_i)   */ -  __pyx_k_tuple_96 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_96)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_96); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_96, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_96)); +  __pyx_k_tuple_98 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_98)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_98); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_98)); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":196 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":196   *             for w_i in self.ha:   *                 f.write("%d " % w_i)   *             f.write("\n")             # <<<<<<<<<<<<<<   *    *     cdef int __search_high(self, int word_id, int offset, int low, int high):   */ -  __pyx_k_tuple_97 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_97)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_97); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14)); -  PyTuple_SET_ITEM(__pyx_k_tuple_97, 0, ((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_97)); +  __pyx_k_tuple_99 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_15)); if (unlikely(!__pyx_k_tuple_99)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_99); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99)); -  /* "/home/paulb/workspace/cdec/python/src/sa/suffix_array.pxi":189 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/suffix_array.pxi":189   *    *     def write_enhanced(self, char* filename):   *         with open(filename, "w") as f:             # <<<<<<<<<<<<<<   *             self.darray.write_enhanced_handle(f)   *             for a_i in self.sa:   */ -  __pyx_k_tuple_98 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_98)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_98); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_98, 0, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_98, 1, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_INCREF(Py_None); -  PyTuple_SET_ITEM(__pyx_k_tuple_98, 2, Py_None); -  __Pyx_GIVEREF(Py_None); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_98)); +  __pyx_k_tuple_100 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_100)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_100); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_100)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":119 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":119   *             logger.info("Sampling strategy: uniform, max sample size = %d", sample_size)   *         else:   *             logger.info("Sampling strategy: no sampling")             # <<<<<<<<<<<<<<   *    *     def sample(self, PhraseLocation phrase_location):   */ -  __pyx_k_tuple_102 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_102)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_102); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_101)); -  PyTuple_SET_ITEM(__pyx_k_tuple_102, 0, ((PyObject *)__pyx_kp_s_101)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_101)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_102)); +  __pyx_k_tuple_104 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_103)); if (unlikely(!__pyx_k_tuple_104)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_104); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_104)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":339 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":339   *         self.rules.root = ExtendedTrieNode(phrase_location=PhraseLocation())   *         if alignment is None:   *             raise Exception("Must specify an alignment object")             # <<<<<<<<<<<<<<   *         self.alignment = alignment   *    */ -  __pyx_k_tuple_107 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_107)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_107); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_106)); -  PyTuple_SET_ITEM(__pyx_k_tuple_107, 0, ((PyObject *)__pyx_kp_s_106)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_106)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_107)); +  __pyx_k_tuple_109 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_108)); if (unlikely(!__pyx_k_tuple_109)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_109); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_109)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1064 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1064   *                         else:   *                             #ERROR: We never get here   *                             raise Exception("Keyword trie error")             # <<<<<<<<<<<<<<   *                 # checking whether lookup_required   *                 if lookup_required:   */ -  __pyx_k_tuple_122 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_122)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_122); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_121)); -  PyTuple_SET_ITEM(__pyx_k_tuple_122, 0, ((PyObject *)__pyx_kp_s_121)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_121)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_122)); +  __pyx_k_tuple_126 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_125)); if (unlikely(!__pyx_k_tuple_126)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_126); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_126)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":1918 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1982 + *             if nt and nt[-1][2] == f_j - 1: + *                 # Add to non-terminal, checking for collisions + *                 old_last_nt = nt[-1][:]             # <<<<<<<<<<<<<< + *                 nt[-1][2] = f_j + *                 if link_i < nt[-1][3]: + */ +  __pyx_k_slice_140 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_140)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_slice_140); +  __Pyx_GIVEREF(__pyx_k_slice_140); + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":1919   *         # f_ i and j are current, e_ i and j are previous   *         # We care _considering_ f_j, so it is not yet in counts   *         def extract(f_i, f_j, e_i, e_j, min_bound, wc, links, nt, nt_open):             # <<<<<<<<<<<<<<   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   */ -  __pyx_k_tuple_135 = PyTuple_New(19); if (unlikely(!__pyx_k_tuple_135)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_135); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 0, ((PyObject *)__pyx_n_s__f_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 1, ((PyObject *)__pyx_n_s__f_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__e_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 2, ((PyObject *)__pyx_n_s__e_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__e_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__e_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 3, ((PyObject *)__pyx_n_s__e_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__e_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__min_bound)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 4, ((PyObject *)__pyx_n_s__min_bound)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__min_bound)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__wc)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 5, ((PyObject *)__pyx_n_s__wc)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__wc)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__links)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 6, ((PyObject *)__pyx_n_s__links)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__links)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__nt)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 7, ((PyObject *)__pyx_n_s__nt)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__nt)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__nt_open)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 8, ((PyObject *)__pyx_n_s__nt_open)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__nt_open)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__link_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 9, ((PyObject *)__pyx_n_s__link_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__link_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__link_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 10, ((PyObject *)__pyx_n_s__link_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__link_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__new_e_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 11, ((PyObject *)__pyx_n_s__new_e_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_e_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__new_e_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 12, ((PyObject *)__pyx_n_s__new_e_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_e_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__new_min_bound)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 13, ((PyObject *)__pyx_n_s__new_min_bound)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_min_bound)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 14, ((PyObject *)__pyx_n_s__i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__nt_collision)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 15, ((PyObject *)__pyx_n_s__nt_collision)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__nt_collision)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__link)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 16, ((PyObject *)__pyx_n_s__link)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__link)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__plus_links)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 17, ((PyObject *)__pyx_n_s__plus_links)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__plus_links)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__old_last_nt)); -  PyTuple_SET_ITEM(__pyx_k_tuple_135, 18, ((PyObject *)__pyx_n_s__old_last_nt)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__old_last_nt)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_135)); -  __pyx_k_codeobj_136 = (PyObject*)__Pyx_PyCode_New(9, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_137, __pyx_n_s__extract, 1918, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_136)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2125 +  __pyx_k_tuple_141 = PyTuple_Pack(19, ((PyObject *)__pyx_n_s__f_i), ((PyObject *)__pyx_n_s__f_j), ((PyObject *)__pyx_n_s__e_i), ((PyObject *)__pyx_n_s__e_j), ((PyObject *)__pyx_n_s__min_bound), ((PyObject *)__pyx_n_s__wc), ((PyObject *)__pyx_n_s__links), ((PyObject *)__pyx_n_s__nt), ((PyObject *)__pyx_n_s__nt_open), ((PyObject *)__pyx_n_s__link_i), ((PyObject *)__pyx_n_s__link_j), ((PyObject *)__pyx_n_s__new_e_i), ((PyObject *)__pyx_n_s__new_e_j), ((PyObject *)__pyx_n_s__new_min_bound), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__nt_collision), ((PyObject *)__pyx_n_s__link), ((PyObject *)__pyx_n_s__plus_links), ((PyObject *)__pyx_n_s__old_last_nt)); if (unlikely(!__pyx_k_tuple_141)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_141); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_141)); +  __pyx_k_codeobj_142 = (PyObject*)__Pyx_PyCode_New(9, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__extract, 1919, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_142)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2039 + *         # Update phrase counts + *         for rule in rules: + *             (f_ph, e_ph, al) = rule[:3]             # <<<<<<<<<<<<<< + *             self.phrases_f[f_ph] += 1 + *             self.phrases_e[e_ph] += 1 + */ +  __pyx_k_slice_145 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_k_slice_145)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_slice_145); +  __Pyx_GIVEREF(__pyx_k_slice_145); + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2059 + *         # Substitute in non-terminals + *         nt_inv = sorted(nt, cmp=lambda x, y: cmp(x[3], y[3])) + *         f_sym = list(f_span[:])             # <<<<<<<<<<<<<< + *         off = f_i + *         for next_nt in nt: + */ +  __pyx_k_slice_147 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_147)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_slice_147); +  __Pyx_GIVEREF(__pyx_k_slice_147); + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2069 + *             f_sym.insert(next_nt[1] - off, sym_setindex(self.category, next_nt[0])) + *             off += (nt_len - 1) + *         e_sym = list(e_span[:])             # <<<<<<<<<<<<<< + *         off = e_i + *         for next_nt in nt_inv: + */ +  __pyx_k_slice_148 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_148)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_slice_148); +  __Pyx_GIVEREF(__pyx_k_slice_148); + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2126   *     # Debugging   *     def dump_online_stats(self):   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   */ -  __pyx_k_tuple_141 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_141)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_141); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_140)); -  PyTuple_SET_ITEM(__pyx_k_tuple_141, 0, ((PyObject *)__pyx_kp_s_140)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_140)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_141)); +  __pyx_k_tuple_152 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_151)); if (unlikely(!__pyx_k_tuple_152)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_152); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_152)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2126 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2127   *     def dump_online_stats(self):   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')             # <<<<<<<<<<<<<<   *         logger.info('------------------------------')   *         logger.info('f')   */ -  __pyx_k_tuple_143 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_143)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_143); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_142)); -  PyTuple_SET_ITEM(__pyx_k_tuple_143, 0, ((PyObject *)__pyx_kp_s_142)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_142)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_143)); +  __pyx_k_tuple_154 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_153)); if (unlikely(!__pyx_k_tuple_154)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_154); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_154)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2127 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2128   *         logger.info('------------------------------')   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')             # <<<<<<<<<<<<<<   *         logger.info('f')   *         for w in self.bilex_f:   */ -  __pyx_k_tuple_144 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_144)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_144); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_140)); -  PyTuple_SET_ITEM(__pyx_k_tuple_144, 0, ((PyObject *)__pyx_kp_s_140)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_140)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_144)); +  __pyx_k_tuple_155 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_151)); if (unlikely(!__pyx_k_tuple_155)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_155); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_155)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2128 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2129   *         logger.info('         Online Stats         ')   *         logger.info('------------------------------')   *         logger.info('f')             # <<<<<<<<<<<<<<   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   */ -  __pyx_k_tuple_145 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_145)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2128; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_145); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f)); -  PyTuple_SET_ITEM(__pyx_k_tuple_145, 0, ((PyObject *)__pyx_n_s__f)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_145)); +  __pyx_k_tuple_156 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__f)); if (unlikely(!__pyx_k_tuple_156)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_156); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_156)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2131 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2132   *         for w in self.bilex_f:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_f[w]))   *         logger.info('e')             # <<<<<<<<<<<<<<   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   */ -  __pyx_k_tuple_147 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_147)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_147); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__e)); -  PyTuple_SET_ITEM(__pyx_k_tuple_147, 0, ((PyObject *)__pyx_n_s__e)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__e)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_147)); +  __pyx_k_tuple_158 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__e)); if (unlikely(!__pyx_k_tuple_158)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_158); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_158)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2134 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2135   *         for w in self.bilex_e:   *             logger.info(sym_tostring(w) + ' : ' + str(self.bilex_e[w]))   *         logger.info('fe')             # <<<<<<<<<<<<<<   *         for w in self.bilex_fe:   *             for w2 in self.bilex_fe[w]:   */ -  __pyx_k_tuple_148 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_148)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_148); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__fe)); -  PyTuple_SET_ITEM(__pyx_k_tuple_148, 0, ((PyObject *)__pyx_n_s__fe)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fe)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_148)); +  __pyx_k_tuple_159 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__fe)); if (unlikely(!__pyx_k_tuple_159)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_159); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_159)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2138 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2139   *             for w2 in self.bilex_fe[w]:   *                 logger.info(sym_tostring(w) + ' : ' + sym_tostring(w2) + ' : ' + str(self.bilex_fe[w][w2]))   *         logger.info('F')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   */ -  __pyx_k_tuple_149 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_149)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_149); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__F)); -  PyTuple_SET_ITEM(__pyx_k_tuple_149, 0, ((PyObject *)__pyx_n_s__F)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__F)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_149)); +  __pyx_k_tuple_160 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__F)); if (unlikely(!__pyx_k_tuple_160)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_160); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_160)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2141 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2142   *         for ph in self.phrases_f:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_f[ph]))   *         logger.info('E')             # <<<<<<<<<<<<<<   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   */ -  __pyx_k_tuple_150 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_150)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_150); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__E)); -  PyTuple_SET_ITEM(__pyx_k_tuple_150, 0, ((PyObject *)__pyx_n_s__E)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__E)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_150)); +  __pyx_k_tuple_161 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__E)); if (unlikely(!__pyx_k_tuple_161)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_161); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_161)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2144 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2145   *         for ph in self.phrases_e:   *             logger.info(str(ph) + ' ||| ' + str(self.phrases_e[ph]))   *         logger.info('FE')             # <<<<<<<<<<<<<<   *         self.dump_online_rules()   *    */ -  __pyx_k_tuple_151 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_151)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_151); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__FE)); -  PyTuple_SET_ITEM(__pyx_k_tuple_151, 0, ((PyObject *)__pyx_n_s__FE)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__FE)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_151)); +  __pyx_k_tuple_162 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__FE)); if (unlikely(!__pyx_k_tuple_162)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_162); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_162)); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2171 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2172   *         phrases = set() # (fphrase, lex_i, lex_j)   *    *         def extract(f_i, f_j, lex_i, lex_j, wc, ntc, syms):             # <<<<<<<<<<<<<<   *             # Phrase extraction limits   *             if f_j > (f_len - 1) or (f_j - f_i) + 1 > self.max_initial_size:   */ -  __pyx_k_tuple_153 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_153)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_153); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 0, ((PyObject *)__pyx_n_s__f_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 1, ((PyObject *)__pyx_n_s__f_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__lex_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 2, ((PyObject *)__pyx_n_s__lex_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lex_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__lex_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 3, ((PyObject *)__pyx_n_s__lex_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lex_j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__wc)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 4, ((PyObject *)__pyx_n_s__wc)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__wc)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__ntc)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 5, ((PyObject *)__pyx_n_s__ntc)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ntc)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__syms)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 6, ((PyObject *)__pyx_n_s__syms)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__syms)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__f)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 7, ((PyObject *)__pyx_n_s__f)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__new_lex_i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 8, ((PyObject *)__pyx_n_s__new_lex_i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_lex_i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__new_lex_j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_153, 9, ((PyObject *)__pyx_n_s__new_lex_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_lex_j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_153)); -  __pyx_k_codeobj_154 = (PyObject*)__Pyx_PyCode_New(7, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_137, __pyx_n_s__extract, 2171, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_154)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2171; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_164 = PyTuple_Pack(10, ((PyObject *)__pyx_n_s__f_i), ((PyObject *)__pyx_n_s__f_j), ((PyObject *)__pyx_n_s__lex_i), ((PyObject *)__pyx_n_s__lex_j), ((PyObject *)__pyx_n_s__wc), ((PyObject *)__pyx_n_s__ntc), ((PyObject *)__pyx_n_s__syms), ((PyObject *)__pyx_n_s__f), ((PyObject *)__pyx_n_s__new_lex_i), ((PyObject *)__pyx_n_s__new_lex_j)); if (unlikely(!__pyx_k_tuple_164)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_164); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_164)); +  __pyx_k_codeobj_165 = (PyObject*)__Pyx_PyCode_New(7, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_164, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__extract, 2172, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_165)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    /* "_sa.pyx":5   * import gzip @@ -80467,7 +76271,7 @@ static int __Pyx_InitCachedConstants(void) {   *     return (resource.getrusage(resource.RUSAGE_SELF).ru_utime+   *             resource.getrusage(resource.RUSAGE_SELF).ru_stime)   */ -  __pyx_k_codeobj_156 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_157, __pyx_n_s__monitor_cpu, 5, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_codeobj_168 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_169, __pyx_n_s__monitor_cpu, 5, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    /* "_sa.pyx":9   *             resource.getrusage(resource.RUSAGE_SELF).ru_stime) @@ -80476,16 +76280,10 @@ static int __Pyx_InitCachedConstants(void) {   *     if filename.endswith('.gz'):   *         return gzip.GzipFile(filename)   */ -  __pyx_k_tuple_158 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_158); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__filename)); -  PyTuple_SET_ITEM(__pyx_k_tuple_158, 0, ((PyObject *)__pyx_n_s__filename)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__filename)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__filename)); -  PyTuple_SET_ITEM(__pyx_k_tuple_158, 1, ((PyObject *)__pyx_n_s__filename)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__filename)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_158)); -  __pyx_k_codeobj_159 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_157, __pyx_n_s__gzip_or_text, 9, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_170 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__filename), ((PyObject *)__pyx_n_s__filename)); if (unlikely(!__pyx_k_tuple_170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_170); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_170)); +  __pyx_k_codeobj_171 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_169, __pyx_n_s__gzip_or_text, 9, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    /* "_sa.pyx":15   *         return open(filename) @@ -80494,209 +76292,116 @@ static int __Pyx_InitCachedConstants(void) {   *    * include "float_list.pxi"   */ -  __pyx_k_tuple_161 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_161); -  __Pyx_INCREF(((PyObject *)__pyx_kp_s_160)); -  PyTuple_SET_ITEM(__pyx_k_tuple_161, 0, ((PyObject *)__pyx_kp_s_160)); -  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_160)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_161)); +  __pyx_k_tuple_173 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_172)); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_173); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173)); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":107 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107   *     return ALPHABET.fromstring(string, terminal)   *    * def isvar(sym):             # <<<<<<<<<<<<<<   *     return sym_isvar(sym)   *    */ -  __pyx_k_tuple_162 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_162)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_162); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__sym)); -  PyTuple_SET_ITEM(__pyx_k_tuple_162, 0, ((PyObject *)__pyx_n_s__sym)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__sym)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_162)); -  __pyx_k_codeobj_163 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_162, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__isvar, 107, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_163)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_174 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__sym)); if (unlikely(!__pyx_k_tuple_174)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_174); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_174)); +  __pyx_k_codeobj_175 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__isvar, 107, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_175)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":110 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110   *     return sym_isvar(sym)   *    * def make_lattice(words):             # <<<<<<<<<<<<<<   *     word_ids = (sym_fromstring(word, True) for word in words)   *     return tuple(((word, None, 1), ) for word in word_ids)   */ -  __pyx_k_tuple_165 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_165)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_165); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__words)); -  PyTuple_SET_ITEM(__pyx_k_tuple_165, 0, ((PyObject *)__pyx_n_s__words)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__words)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__word_ids)); -  PyTuple_SET_ITEM(__pyx_k_tuple_165, 1, ((PyObject *)__pyx_n_s__word_ids)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__word_ids)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_165, 2, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_165, 3, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_165, 4, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_165)); -  __pyx_k_codeobj_166 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__make_lattice, 110, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_166)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":114 +  __pyx_k_tuple_177 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__words), ((PyObject *)__pyx_n_s__word_ids), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_177)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_177); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_177)); +  __pyx_k_codeobj_178 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__make_lattice, 110, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_178)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114   *     return tuple(((word, None, 1), ) for word in word_ids)   *    * def decode_lattice(lattice):             # <<<<<<<<<<<<<<   *     return tuple((sym_tostring(sym), weight, dist) for (sym, weight, dist) in arc   *             for arc in node for node in lattice)   */ -  __pyx_k_tuple_167 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_167)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_167); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__lattice)); -  PyTuple_SET_ITEM(__pyx_k_tuple_167, 0, ((PyObject *)__pyx_n_s__lattice)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lattice)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_167, 1, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_167, 2, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_167)); -  __pyx_k_codeobj_168 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__decode_lattice, 114, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_168)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":118 +  __pyx_k_tuple_179 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__lattice), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_179)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_179); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_179)); +  __pyx_k_codeobj_180 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_lattice, 114, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_180)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118   *             for arc in node for node in lattice)   *    * def decode_sentence(lattice):             # <<<<<<<<<<<<<<   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)   *    */ -  __pyx_k_tuple_169 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_169)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_169); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__lattice)); -  PyTuple_SET_ITEM(__pyx_k_tuple_169, 0, ((PyObject *)__pyx_n_s__lattice)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lattice)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_169, 1, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_169, 2, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_169)); -  __pyx_k_codeobj_170 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__decode_sentence, 118, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_170)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":121 +  __pyx_k_tuple_181 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__lattice), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_181)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_181); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_181)); +  __pyx_k_codeobj_182 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_sentence, 118, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_182)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)   *    * def encode_words(words):             # <<<<<<<<<<<<<<   *     return tuple(sym_fromstring(word, True) for word in words)   *    */ -  __pyx_k_tuple_171 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_171)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_171); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__words)); -  PyTuple_SET_ITEM(__pyx_k_tuple_171, 0, ((PyObject *)__pyx_n_s__words)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__words)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_171, 1, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_171, 2, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_171)); -  __pyx_k_codeobj_172 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__encode_words, 121, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_172)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":124 +  __pyx_k_tuple_183 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__words), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_183)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_183); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_183)); +  __pyx_k_codeobj_184 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__encode_words, 121, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_184)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124   *     return tuple(sym_fromstring(word, True) for word in words)   *    * def decode_words(syms):             # <<<<<<<<<<<<<<   *     return tuple(sym_tostring(sym) for sym in syms)   */ -  __pyx_k_tuple_173 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_173); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__syms)); -  PyTuple_SET_ITEM(__pyx_k_tuple_173, 0, ((PyObject *)__pyx_n_s__syms)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__syms)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_173, 1, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__genexpr)); -  PyTuple_SET_ITEM(__pyx_k_tuple_173, 2, ((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__genexpr)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173)); -  __pyx_k_codeobj_174 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_164, __pyx_n_s__decode_words, 124, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_174)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_185 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__syms), ((PyObject *)__pyx_n_s__genexpr), ((PyObject *)__pyx_n_s__genexpr)); if (unlikely(!__pyx_k_tuple_185)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_185); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_185)); +  __pyx_k_codeobj_186 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_176, __pyx_n_s__decode_words, 124, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_186)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2205 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206   *    * # Spans are _inclusive_ on both ends [i, j]   * def span_check(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_176 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_176)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_176); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__vec)); -  PyTuple_SET_ITEM(__pyx_k_tuple_176, 0, ((PyObject *)__pyx_n_s__vec)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vec)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_176, 1, ((PyObject *)__pyx_n_s__i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_176, 2, ((PyObject *)__pyx_n_s__j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); -  PyTuple_SET_ITEM(__pyx_k_tuple_176, 3, ((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_176)); -  __pyx_k_codeobj_177 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_137, __pyx_n_s__span_check, 2205, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_177)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2213 +  __pyx_k_tuple_188 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_188)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_188); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_188)); +  __pyx_k_codeobj_189 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_188, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_check, 2206, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_189)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_178 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_178)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_178); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__vec)); -  PyTuple_SET_ITEM(__pyx_k_tuple_178, 0, ((PyObject *)__pyx_n_s__vec)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vec)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_178, 1, ((PyObject *)__pyx_n_s__i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_178, 2, ((PyObject *)__pyx_n_s__j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); -  PyTuple_SET_ITEM(__pyx_k_tuple_178, 3, ((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_178)); -  __pyx_k_codeobj_179 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_137, __pyx_n_s__span_inc, 2213, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_179)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2219 +  __pyx_k_tuple_190 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_190)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_190); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_190)); +  __pyx_k_codeobj_191 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_190, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_inc, 2214, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_191)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_k_tuple_180 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_180)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __Pyx_GOTREF(__pyx_k_tuple_180); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__vec)); -  PyTuple_SET_ITEM(__pyx_k_tuple_180, 0, ((PyObject *)__pyx_n_s__vec)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vec)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); -  PyTuple_SET_ITEM(__pyx_k_tuple_180, 1, ((PyObject *)__pyx_n_s__i)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); -  PyTuple_SET_ITEM(__pyx_k_tuple_180, 2, ((PyObject *)__pyx_n_s__j)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); -  __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); -  PyTuple_SET_ITEM(__pyx_k_tuple_180, 3, ((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); -  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_180)); -  __pyx_k_codeobj_181 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_137, __pyx_n_s__span_dec, 2219, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_181)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_k_tuple_192 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vec), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j), ((PyObject *)__pyx_n_s__k)); if (unlikely(!__pyx_k_tuple_192)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __Pyx_GOTREF(__pyx_k_tuple_192); +  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_192)); +  __pyx_k_codeobj_193 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_143, __pyx_n_s__span_dec, 2220, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_193)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_RefNannyFinishContext();    return 0;    __pyx_L1_error:; @@ -80709,13 +76414,13 @@ static int __Pyx_InitGlobals(void) {    __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_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};    __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};    __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) {__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_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};    __pyx_int_20 = PyInt_FromLong(20); if (unlikely(!__pyx_int_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};    __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; -  __pyx_int_65536 = PyInt_FromLong(65536); if (unlikely(!__pyx_int_65536)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};    return 0;    __pyx_L1_error:;    return -1; @@ -80732,6 +76437,9 @@ PyMODINIT_FUNC PyInit__sa(void)    PyObject *__pyx_t_1 = NULL;    PyObject *__pyx_t_2 = NULL;    PyObject *__pyx_t_3 = NULL; +  int __pyx_lineno = 0; +  const char *__pyx_filename = NULL; +  int __pyx_clineno = 0;    __Pyx_RefNannyDeclarations    #if CYTHON_REFNANNY    __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -80764,19 +76472,31 @@ PyMODINIT_FUNC PyInit__sa(void)    #endif    /*--- Module creation code ---*/    #if PY_MAJOR_VERSION < 3 -  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_sa"), __pyx_methods, 0, 0, PYTHON_API_VERSION); +  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_sa"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);    #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); +  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  Py_INCREF(__pyx_d); +  #if PY_MAJOR_VERSION >= 3 +  { +    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    if (!PyDict_GetItemString(modules, "_sa")) { +      if (unlikely(PyDict_SetItemString(modules, "_sa", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +    } +  } +  #endif +  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  #if CYTHON_COMPILING_IN_PYPY +  Py_INCREF(__pyx_b);    #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 PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) +  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  #endif    if (__pyx_module_is_main__sa) {      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;};    } @@ -80794,14 +76514,38 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_ExportFunction("sym_isvar", (void (*)(void))__pyx_f_3_sa_sym_isvar, "int (int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_ExportFunction("sym_getindex", (void (*)(void))__pyx_f_3_sa_sym_getindex, "int (int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    /*--- Type init code ---*/ -  __pyx_vtabptr_3_sa_FloatList = &__pyx_vtable_3_sa_FloatList; -  __pyx_vtable_3_sa_FloatList.set = (void (*)(struct __pyx_obj_3_sa_FloatList *, int, float))__pyx_f_3_sa_9FloatList_set; -  __pyx_vtable_3_sa_FloatList.write_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_write_handle; -  __pyx_vtable_3_sa_FloatList.read_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_read_handle; -  if (PyType_Ready(&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_FloatList.tp_dict, __pyx_vtabptr_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "FloatList", (PyObject *)&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_FloatList = &__pyx_type_3_sa_FloatList; +  __pyx_vtabptr_3_sa_HieroCachingRuleFactory = &__pyx_vtable_3_sa_HieroCachingRuleFactory; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.set_idmap = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_DataArray *))__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.baeza_yates_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings_set = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_t_3_sa_Matching *, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.merge_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.sort_phrase_loc = (void (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect_helper = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_PhraseLocation *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.loc2str = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_PhraseLocation *))__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect = (struct __pyx_obj_3_sa_PhraseLocation *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, PyObject *, PyObject *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.find_fixpoint = (int (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, PyObject *, int *, int *, int *, int *, int, int, int *, int *, int *, int *, int, int, int, int, int, int, int, int, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.find_projection = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.int_arr_extend = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.extract_phrases = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int, int, int, int *, int *, int *, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.create_alignments = (struct __pyx_obj_3_sa_IntList *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_IntList *))__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments; +  __pyx_vtable_3_sa_HieroCachingRuleFactory.extract = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_t_3_sa_Matching *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract; +  if (PyType_Ready(&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_HieroCachingRuleFactory.tp_dict, __pyx_vtabptr_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "HieroCachingRuleFactory", (PyObject *)&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_HieroCachingRuleFactory = &__pyx_type_3_sa_HieroCachingRuleFactory; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = &__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_17_genexpr) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = &__pyx_type_3_sa___pyx_scope_struct_17_genexpr; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_20_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = &__pyx_type_3_sa___pyx_scope_struct_20_genexpr; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_3_compute_stats) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = &__pyx_type_3_sa___pyx_scope_struct_3_compute_stats; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_12_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = &__pyx_type_3_sa___pyx_scope_struct_12_genexpr; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_29_genexpr) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = &__pyx_type_3_sa___pyx_scope_struct_29_genexpr;    __pyx_vtabptr_3_sa_IntList = &__pyx_vtable_3_sa_IntList;    __pyx_vtable_3_sa_IntList.set = (void (*)(struct __pyx_obj_3_sa_IntList *, int, int))__pyx_f_3_sa_7IntList_set;    __pyx_vtable_3_sa_IntList._append = (void (*)(struct __pyx_obj_3_sa_IntList *, int))__pyx_f_3_sa_7IntList__append; @@ -80814,41 +76558,9 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_SetVtable(__pyx_type_3_sa_IntList.tp_dict, __pyx_vtabptr_3_sa_IntList) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "IntList", (PyObject *)&__pyx_type_3_sa_IntList) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_IntList = &__pyx_type_3_sa_IntList; -  if (PyType_Ready(&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "FeatureVector", (PyObject *)&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_FeatureVector = &__pyx_type_3_sa_FeatureVector; -  __pyx_vtabptr_3_sa_Phrase = &__pyx_vtable_3_sa_Phrase; -  __pyx_vtable_3_sa_Phrase.chunkpos = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunkpos; -  __pyx_vtable_3_sa_Phrase.chunklen = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunklen; -  if (PyType_Ready(&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_Phrase.tp_dict, __pyx_vtabptr_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "Phrase", (PyObject *)&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_Phrase = &__pyx_type_3_sa_Phrase; -  if (PyType_Ready(&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "Rule", (PyObject *)&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_Rule = &__pyx_type_3_sa_Rule; -  __pyx_vtabptr_3_sa_StringMap = &__pyx_vtable_3_sa_StringMap; -  __pyx_vtable_3_sa_StringMap.word = (char *(*)(struct __pyx_obj_3_sa_StringMap *, int))__pyx_f_3_sa_9StringMap_word; -  __pyx_vtable_3_sa_StringMap.index = (int (*)(struct __pyx_obj_3_sa_StringMap *, char *))__pyx_f_3_sa_9StringMap_index; -  if (PyType_Ready(&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_StringMap.tp_dict, __pyx_vtabptr_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "StringMap", (PyObject *)&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_StringMap = &__pyx_type_3_sa_StringMap; -  __pyx_vtabptr_3_sa_DataArray = &__pyx_vtable_3_sa_DataArray; -  __pyx_vtable_3_sa_DataArray.read_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_read_handle; -  __pyx_vtable_3_sa_DataArray.write_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_write_handle; -  if (PyType_Ready(&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_DataArray.tp_dict, __pyx_vtabptr_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "DataArray", (PyObject *)&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_DataArray = &__pyx_type_3_sa_DataArray; -  __pyx_vtabptr_3_sa_Alignment = &__pyx_vtable_3_sa_Alignment; -  __pyx_vtable_3_sa_Alignment.link = (int (*)(struct __pyx_obj_3_sa_Alignment *, int, int))__pyx_f_3_sa_9Alignment_link; -  __pyx_vtable_3_sa_Alignment._unlink = (PyObject *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *, int *))__pyx_f_3_sa_9Alignment__unlink; -  __pyx_vtable_3_sa_Alignment._get_sent_links = (int *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *))__pyx_f_3_sa_9Alignment__get_sent_links; -  if (PyType_Ready(&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_Alignment.tp_dict, __pyx_vtabptr_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "Alignment", (PyObject *)&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_Alignment = &__pyx_type_3_sa_Alignment; +  if (PyType_Ready(&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "VEBIterator", (PyObject *)&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_VEBIterator = &__pyx_type_3_sa_VEBIterator;    __pyx_vtabptr_3_sa_BiLex = &__pyx_vtable_3_sa_BiLex;    __pyx_vtable_3_sa_BiLex.compute_from_data = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_obj_3_sa_SuffixArray *, struct __pyx_obj_3_sa_DataArray *, struct __pyx_obj_3_sa_Alignment *))__pyx_f_3_sa_5BiLex_compute_from_data;    __pyx_vtable_3_sa_BiLex._add_node = (PyObject *(*)(struct __pyx_obj_3_sa_BiLex *, struct __pyx_t_3_sa__node *, int *, float, int *))__pyx_f_3_sa_5BiLex__add_node; @@ -80860,15 +76572,6 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_SetVtable(__pyx_type_3_sa_BiLex.tp_dict, __pyx_vtabptr_3_sa_BiLex) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "BiLex", (PyObject *)&__pyx_type_3_sa_BiLex) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_BiLex = &__pyx_type_3_sa_BiLex; -  if (PyType_Ready(&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "BitSetIterator", (PyObject *)&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_BitSetIterator = &__pyx_type_3_sa_BitSetIterator; -  if (PyType_Ready(&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "BitSet", (PyObject *)&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_BitSet = &__pyx_type_3_sa_BitSet; -  if (PyType_Ready(&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "VEBIterator", (PyObject *)&__pyx_type_3_sa_VEBIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_VEBIterator = &__pyx_type_3_sa_VEBIterator;    __pyx_vtabptr_3_sa_VEB = &__pyx_vtable_3_sa_VEB;    __pyx_vtable_3_sa_VEB._findsucc = (int (*)(struct __pyx_obj_3_sa_VEB *, int))__pyx_f_3_sa_3VEB__findsucc;    __pyx_vtable_3_sa_VEB._insert = (int (*)(struct __pyx_obj_3_sa_VEB *, int))__pyx_f_3_sa_3VEB__insert; @@ -80877,31 +76580,23 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_SetVtable(__pyx_type_3_sa_VEB.tp_dict, __pyx_vtabptr_3_sa_VEB) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "VEB", (PyObject *)&__pyx_type_3_sa_VEB) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_VEB = &__pyx_type_3_sa_VEB; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_11_encode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = &__pyx_type_3_sa___pyx_scope_struct_11_encode_words;    if (PyType_Ready(&__pyx_type_3_sa_LCP) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "LCP", (PyObject *)&__pyx_type_3_sa_LCP) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_LCP = &__pyx_type_3_sa_LCP; -  __pyx_vtabptr_3_sa_Alphabet = &__pyx_vtable_3_sa_Alphabet; -  __pyx_vtable_3_sa_Alphabet.isvar = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isvar; -  __pyx_vtable_3_sa_Alphabet.isword = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isword; -  __pyx_vtable_3_sa_Alphabet.getindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_getindex; -  __pyx_vtable_3_sa_Alphabet.setindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_setindex; -  __pyx_vtable_3_sa_Alphabet.clearindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_clearindex; -  __pyx_vtable_3_sa_Alphabet.match = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_match; -  __pyx_vtable_3_sa_Alphabet.tocat = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tocat; -  __pyx_vtable_3_sa_Alphabet.fromcat = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *))__pyx_f_3_sa_8Alphabet_fromcat; -  __pyx_vtable_3_sa_Alphabet.tostring = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tostring; -  __pyx_vtable_3_sa_Alphabet.fromstring = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *, int))__pyx_f_3_sa_8Alphabet_fromstring; -  if (PyType_Ready(&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_Alphabet.tp_dict, __pyx_vtabptr_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "Alphabet", (PyObject *)&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_Alphabet = &__pyx_type_3_sa_Alphabet; -  __pyx_vtabptr_3_sa_TrieMap = &__pyx_vtable_3_sa_TrieMap; -  __pyx_vtable_3_sa_TrieMap._insert = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__insert; -  __pyx_vtable_3_sa_TrieMap._contains = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__contains; -  if (PyType_Ready(&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_TrieMap.tp_dict, __pyx_vtabptr_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "TrieMap", (PyObject *)&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_TrieMap = &__pyx_type_3_sa_TrieMap; +  __pyx_vtabptr_3_sa_DataArray = &__pyx_vtable_3_sa_DataArray; +  __pyx_vtable_3_sa_DataArray.read_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_read_handle; +  __pyx_vtable_3_sa_DataArray.write_handle = (void (*)(struct __pyx_obj_3_sa_DataArray *, FILE *))__pyx_f_3_sa_9DataArray_write_handle; +  if (PyType_Ready(&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_DataArray.tp_dict, __pyx_vtabptr_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "DataArray", (PyObject *)&__pyx_type_3_sa_DataArray) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_DataArray = &__pyx_type_3_sa_DataArray; +  if (PyType_Ready(&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "BitSetIterator", (PyObject *)&__pyx_type_3_sa_BitSetIterator) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_BitSetIterator = &__pyx_type_3_sa_BitSetIterator; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_23_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = &__pyx_type_3_sa___pyx_scope_struct_23_genexpr;    __pyx_vtabptr_3_sa_Precomputation = &__pyx_vtable_3_sa_Precomputation;    __pyx_vtable_3_sa_Precomputation.read_map = (PyObject *(*)(struct __pyx_obj_3_sa_Precomputation *, FILE *))__pyx_f_3_sa_14Precomputation_read_map;    __pyx_vtable_3_sa_Precomputation.write_map = (PyObject *(*)(struct __pyx_obj_3_sa_Precomputation *, PyObject *, FILE *))__pyx_f_3_sa_14Precomputation_write_map; @@ -80909,6 +76604,10 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_SetVtable(__pyx_type_3_sa_Precomputation.tp_dict, __pyx_vtabptr_3_sa_Precomputation) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "Precomputation", (PyObject *)&__pyx_type_3_sa_Precomputation) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_Precomputation = &__pyx_type_3_sa_Precomputation; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_18_alignments) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_18_alignments = &__pyx_type_3_sa___pyx_scope_struct_18_alignments; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_14_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_14_genexpr = &__pyx_type_3_sa___pyx_scope_struct_14_genexpr;    __pyx_vtabptr_3_sa_SuffixArray = &__pyx_vtable_3_sa_SuffixArray;    __pyx_vtable_3_sa_SuffixArray.__pyx___search_high = (int (*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int))__pyx_f_3_sa_11SuffixArray___search_high;    __pyx_vtable_3_sa_SuffixArray.__pyx___search_low = (int (*)(struct __pyx_obj_3_sa_SuffixArray *, int, int, int, int))__pyx_f_3_sa_11SuffixArray___search_low; @@ -80918,111 +76617,132 @@ PyMODINIT_FUNC PyInit__sa(void)    if (__Pyx_SetVtable(__pyx_type_3_sa_SuffixArray.tp_dict, __pyx_vtabptr_3_sa_SuffixArray) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "SuffixArray", (PyObject *)&__pyx_type_3_sa_SuffixArray) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_SuffixArray = &__pyx_type_3_sa_SuffixArray; -  if (PyType_Ready(&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "TrieNode", (PyObject *)&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_TrieNode = &__pyx_type_3_sa_TrieNode; -  __pyx_type_3_sa_ExtendedTrieNode.tp_base = __pyx_ptype_3_sa_TrieNode; -  if (PyType_Ready(&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "ExtendedTrieNode", (PyObject *)&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_ExtendedTrieNode = &__pyx_type_3_sa_ExtendedTrieNode; -  if (PyType_Ready(&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "TrieTable", (PyObject *)&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_TrieTable = &__pyx_type_3_sa_TrieTable; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_16___str__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_16___str__ = &__pyx_type_3_sa___pyx_scope_struct_16___str__; +  __pyx_vtabptr_3_sa_Alphabet = &__pyx_vtable_3_sa_Alphabet; +  __pyx_vtable_3_sa_Alphabet.isvar = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isvar; +  __pyx_vtable_3_sa_Alphabet.isword = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_isword; +  __pyx_vtable_3_sa_Alphabet.getindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_getindex; +  __pyx_vtable_3_sa_Alphabet.setindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_setindex; +  __pyx_vtable_3_sa_Alphabet.clearindex = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_clearindex; +  __pyx_vtable_3_sa_Alphabet.match = (int (*)(struct __pyx_obj_3_sa_Alphabet *, int, int))__pyx_f_3_sa_8Alphabet_match; +  __pyx_vtable_3_sa_Alphabet.tocat = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tocat; +  __pyx_vtable_3_sa_Alphabet.fromcat = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *))__pyx_f_3_sa_8Alphabet_fromcat; +  __pyx_vtable_3_sa_Alphabet.tostring = (char *(*)(struct __pyx_obj_3_sa_Alphabet *, int))__pyx_f_3_sa_8Alphabet_tostring; +  __pyx_vtable_3_sa_Alphabet.fromstring = (int (*)(struct __pyx_obj_3_sa_Alphabet *, char *, int))__pyx_f_3_sa_8Alphabet_fromstring; +  if (PyType_Ready(&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_Alphabet.tp_dict, __pyx_vtabptr_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "Alphabet", (PyObject *)&__pyx_type_3_sa_Alphabet) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_Alphabet = &__pyx_type_3_sa_Alphabet; +  if (PyType_Ready(&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "Rule", (PyObject *)&__pyx_type_3_sa_Rule) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_Rule = &__pyx_type_3_sa_Rule; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_6_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = &__pyx_type_3_sa___pyx_scope_struct_6_genexpr; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_21_add_instance) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1885; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_21_add_instance = &__pyx_type_3_sa___pyx_scope_struct_21_add_instance; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_2_genexpr) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = &__pyx_type_3_sa___pyx_scope_struct_2_genexpr;    __pyx_vtabptr_3_sa_PhraseLocation = &__pyx_vtable_3_sa_PhraseLocation;    __pyx_vtable_3_sa_PhraseLocation.contains = (int (*)(struct __pyx_obj_3_sa_PhraseLocation *, int))__pyx_f_3_sa_14PhraseLocation_contains;    if (PyType_Ready(&__pyx_type_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetVtable(__pyx_type_3_sa_PhraseLocation.tp_dict, __pyx_vtabptr_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "PhraseLocation", (PyObject *)&__pyx_type_3_sa_PhraseLocation) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_PhraseLocation = &__pyx_type_3_sa_PhraseLocation; -  if (PyType_Ready(&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "Sampler", (PyObject *)&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_Sampler = &__pyx_type_3_sa_Sampler; -  __pyx_vtabptr_3_sa_HieroCachingRuleFactory = &__pyx_vtable_3_sa_HieroCachingRuleFactory; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.set_idmap = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_DataArray *))__pyx_f_3_sa_23HieroCachingRuleFactory_set_idmap; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.baeza_yates_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_baeza_yates_helper; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings_set = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings_set; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.compare_matchings = (long (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_t_3_sa_Matching *, struct __pyx_t_3_sa_Matching *, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_compare_matchings; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.merge_helper = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int, int, int, int *, int, int, int, int, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_merge_helper; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.sort_phrase_loc = (void (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_IntList *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_sort_phrase_loc; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect_helper = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_obj_3_sa_PhraseLocation *, struct __pyx_obj_3_sa_PhraseLocation *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect_helper; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.loc2str = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_PhraseLocation *))__pyx_f_3_sa_23HieroCachingRuleFactory_loc2str; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.intersect = (struct __pyx_obj_3_sa_PhraseLocation *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, PyObject *, PyObject *, struct __pyx_obj_3_sa_Phrase *))__pyx_f_3_sa_23HieroCachingRuleFactory_intersect; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.find_fixpoint = (int (*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, PyObject *, int *, int *, int *, int *, int, int, int *, int *, int *, int *, int, int, int, int, int, int, int, int, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_find_fixpoint; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.find_projection = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int *))__pyx_f_3_sa_23HieroCachingRuleFactory_find_projection; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.int_arr_extend = (int *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_int_arr_extend; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.extract_phrases = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int, int, int *, int *, int *, int, int, int, int *, int *, int *, int, int, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract_phrases; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.create_alignments = (struct __pyx_obj_3_sa_IntList *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, int *, int, PyObject *, PyObject *))__pyx_f_3_sa_23HieroCachingRuleFactory_create_alignments; -  __pyx_vtable_3_sa_HieroCachingRuleFactory.extract = (PyObject *(*)(struct __pyx_obj_3_sa_HieroCachingRuleFactory *, struct __pyx_obj_3_sa_Phrase *, struct __pyx_t_3_sa_Matching *, int *, int))__pyx_f_3_sa_23HieroCachingRuleFactory_extract; -  if (PyType_Ready(&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetVtable(__pyx_type_3_sa_HieroCachingRuleFactory.tp_dict, __pyx_vtabptr_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  if (__Pyx_SetAttrString(__pyx_m, "HieroCachingRuleFactory", (PyObject *)&__pyx_type_3_sa_HieroCachingRuleFactory) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa_HieroCachingRuleFactory = &__pyx_type_3_sa_HieroCachingRuleFactory; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_15___iter__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = &__pyx_type_3_sa___pyx_scope_struct_15___iter__; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_22_form_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2055; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_22_form_rule = &__pyx_type_3_sa___pyx_scope_struct_22_form_rule; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_25_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_25_genexpr = &__pyx_type_3_sa___pyx_scope_struct_25_genexpr; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = &__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_28___str__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_28___str__ = &__pyx_type_3_sa___pyx_scope_struct_28___str__; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_1_read_bitext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = &__pyx_type_3_sa___pyx_scope_struct_1_read_bitext; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_13_decode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = &__pyx_type_3_sa___pyx_scope_struct_13_decode_words; +  if (PyType_Ready(&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "FeatureVector", (PyObject *)&__pyx_type_3_sa_FeatureVector) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_FeatureVector = &__pyx_type_3_sa_FeatureVector; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = &__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_19_input) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_19_input = &__pyx_type_3_sa___pyx_scope_struct_19_input;    __pyx_vtabptr_3_sa_Scorer = &__pyx_vtable_3_sa_Scorer;    __pyx_vtable_3_sa_Scorer.score = (struct __pyx_obj_3_sa_FeatureVector *(*)(struct __pyx_obj_3_sa_Scorer *, PyObject *))__pyx_f_3_sa_6Scorer_score;    if (PyType_Ready(&__pyx_type_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetVtable(__pyx_type_3_sa_Scorer.tp_dict, __pyx_vtabptr_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    if (__Pyx_SetAttrString(__pyx_m, "Scorer", (PyObject *)&__pyx_type_3_sa_Scorer) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa_Scorer = &__pyx_type_3_sa_Scorer; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct____iter__ = &__pyx_type_3_sa___pyx_scope_struct____iter__; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_1_read_bitext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_1_read_bitext = &__pyx_type_3_sa___pyx_scope_struct_1_read_bitext; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_2_genexpr) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_2_genexpr = &__pyx_type_3_sa___pyx_scope_struct_2_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_3_compute_stats) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_3_compute_stats = &__pyx_type_3_sa___pyx_scope_struct_3_compute_stats; +  __pyx_vtabptr_3_sa_Alignment = &__pyx_vtable_3_sa_Alignment; +  __pyx_vtable_3_sa_Alignment.link = (int (*)(struct __pyx_obj_3_sa_Alignment *, int, int))__pyx_f_3_sa_9Alignment_link; +  __pyx_vtable_3_sa_Alignment._unlink = (PyObject *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *, int *))__pyx_f_3_sa_9Alignment__unlink; +  __pyx_vtable_3_sa_Alignment._get_sent_links = (int *(*)(struct __pyx_obj_3_sa_Alignment *, int, int *))__pyx_f_3_sa_9Alignment__get_sent_links; +  if (PyType_Ready(&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_Alignment.tp_dict, __pyx_vtabptr_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "Alignment", (PyObject *)&__pyx_type_3_sa_Alignment) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_Alignment = &__pyx_type_3_sa_Alignment; +  if (PyType_Ready(&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "BitSet", (PyObject *)&__pyx_type_3_sa_BitSet) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_BitSet = &__pyx_type_3_sa_BitSet; +  if (PyType_Ready(&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "Sampler", (PyObject *)&__pyx_type_3_sa_Sampler) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_Sampler = &__pyx_type_3_sa_Sampler; +  __pyx_vtabptr_3_sa_StringMap = &__pyx_vtable_3_sa_StringMap; +  __pyx_vtable_3_sa_StringMap.word = (char *(*)(struct __pyx_obj_3_sa_StringMap *, int))__pyx_f_3_sa_9StringMap_word; +  __pyx_vtable_3_sa_StringMap.index = (int (*)(struct __pyx_obj_3_sa_StringMap *, char *))__pyx_f_3_sa_9StringMap_index; +  if (PyType_Ready(&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_StringMap.tp_dict, __pyx_vtabptr_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "StringMap", (PyObject *)&__pyx_type_3_sa_StringMap) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_StringMap = &__pyx_type_3_sa_StringMap; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases = &__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases; +  if (PyType_Ready(&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "TrieNode", (PyObject *)&__pyx_type_3_sa_TrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_TrieNode = &__pyx_type_3_sa_TrieNode; +  __pyx_type_3_sa_ExtendedTrieNode.tp_base = __pyx_ptype_3_sa_TrieNode; +  if (PyType_Ready(&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "ExtendedTrieNode", (PyObject *)&__pyx_type_3_sa_ExtendedTrieNode) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_ExtendedTrieNode = &__pyx_type_3_sa_ExtendedTrieNode; +  __pyx_vtabptr_3_sa_TrieMap = &__pyx_vtable_3_sa_TrieMap; +  __pyx_vtable_3_sa_TrieMap._insert = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__insert; +  __pyx_vtable_3_sa_TrieMap._contains = (struct __pyx_t_3_sa__Trie_Node *(*)(struct __pyx_obj_3_sa_TrieMap *, int *, int))__pyx_f_3_sa_7TrieMap__contains; +  if (PyType_Ready(&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_TrieMap.tp_dict, __pyx_vtabptr_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "TrieMap", (PyObject *)&__pyx_type_3_sa_TrieMap) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_TrieMap = &__pyx_type_3_sa_TrieMap; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_8_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = &__pyx_type_3_sa___pyx_scope_struct_8_genexpr;    if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_4_make_lattice) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_4_make_lattice = &__pyx_type_3_sa___pyx_scope_struct_4_make_lattice; +  __pyx_vtabptr_3_sa_Phrase = &__pyx_vtable_3_sa_Phrase; +  __pyx_vtable_3_sa_Phrase.chunkpos = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunkpos; +  __pyx_vtable_3_sa_Phrase.chunklen = (int (*)(struct __pyx_obj_3_sa_Phrase *, int))__pyx_f_3_sa_6Phrase_chunklen; +  if (PyType_Ready(&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_Phrase.tp_dict, __pyx_vtabptr_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "Phrase", (PyObject *)&__pyx_type_3_sa_Phrase) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_Phrase = &__pyx_type_3_sa_Phrase; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_27___iter__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct_27___iter__ = &__pyx_type_3_sa___pyx_scope_struct_27___iter__; +  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct____iter__) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa___pyx_scope_struct____iter__ = &__pyx_type_3_sa___pyx_scope_struct____iter__; +  if (PyType_Ready(&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "TrieTable", (PyObject *)&__pyx_type_3_sa_TrieTable) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_TrieTable = &__pyx_type_3_sa_TrieTable;    if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_5_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_5_genexpr = &__pyx_type_3_sa___pyx_scope_struct_5_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_6_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_6_genexpr = &__pyx_type_3_sa___pyx_scope_struct_6_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_7_decode_lattice = &__pyx_type_3_sa___pyx_scope_struct_7_decode_lattice; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_8_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_8_genexpr = &__pyx_type_3_sa___pyx_scope_struct_8_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_9_decode_sentence = &__pyx_type_3_sa___pyx_scope_struct_9_decode_sentence;    if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_10_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __pyx_ptype_3_sa___pyx_scope_struct_10_genexpr = &__pyx_type_3_sa___pyx_scope_struct_10_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_11_encode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_11_encode_words = &__pyx_type_3_sa___pyx_scope_struct_11_encode_words; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_12_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_12_genexpr = &__pyx_type_3_sa___pyx_scope_struct_12_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_13_decode_words) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_13_decode_words = &__pyx_type_3_sa___pyx_scope_struct_13_decode_words; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_14_genexpr) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_14_genexpr = &__pyx_type_3_sa___pyx_scope_struct_14_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_15___iter__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_15___iter__ = &__pyx_type_3_sa___pyx_scope_struct_15___iter__; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_16___str__) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_16___str__ = &__pyx_type_3_sa___pyx_scope_struct_16___str__; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_17_genexpr) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_17_genexpr = &__pyx_type_3_sa___pyx_scope_struct_17_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_18_alignments) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_18_alignments = &__pyx_type_3_sa___pyx_scope_struct_18_alignments; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_19_input) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_19_input = &__pyx_type_3_sa___pyx_scope_struct_19_input; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_20_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_20_genexpr = &__pyx_type_3_sa___pyx_scope_struct_20_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_21_add_instance) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1884; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_21_add_instance = &__pyx_type_3_sa___pyx_scope_struct_21_add_instance; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_22_form_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_22_form_rule = &__pyx_type_3_sa___pyx_scope_struct_22_form_rule; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_23_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_23_genexpr = &__pyx_type_3_sa___pyx_scope_struct_23_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_24_fmt_rule = &__pyx_type_3_sa___pyx_scope_struct_24_fmt_rule; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_25_genexpr) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_25_genexpr = &__pyx_type_3_sa___pyx_scope_struct_25_genexpr; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_26_get_f_phrases = &__pyx_type_3_sa___pyx_scope_struct_26_get_f_phrases; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_27___iter__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_27___iter__ = &__pyx_type_3_sa___pyx_scope_struct_27___iter__; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_28___str__) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_28___str__ = &__pyx_type_3_sa___pyx_scope_struct_28___str__; -  if (PyType_Ready(&__pyx_type_3_sa___pyx_scope_struct_29_genexpr) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  __pyx_ptype_3_sa___pyx_scope_struct_29_genexpr = &__pyx_type_3_sa___pyx_scope_struct_29_genexpr; +  __pyx_vtabptr_3_sa_FloatList = &__pyx_vtable_3_sa_FloatList; +  __pyx_vtable_3_sa_FloatList.set = (void (*)(struct __pyx_obj_3_sa_FloatList *, int, float))__pyx_f_3_sa_9FloatList_set; +  __pyx_vtable_3_sa_FloatList.write_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_write_handle; +  __pyx_vtable_3_sa_FloatList.read_handle = (void (*)(struct __pyx_obj_3_sa_FloatList *, FILE *))__pyx_f_3_sa_9FloatList_read_handle; +  if (PyType_Ready(&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetVtable(__pyx_type_3_sa_FloatList.tp_dict, __pyx_vtabptr_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (__Pyx_SetAttrString(__pyx_m, "FloatList", (PyObject *)&__pyx_type_3_sa_FloatList) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_ptype_3_sa_FloatList = &__pyx_type_3_sa_FloatList;    /*--- Type import code ---*/    /*--- Variable import code ---*/    /*--- Function import code ---*/ @@ -81035,7 +76755,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__logging), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__logging, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__logging, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "_sa.pyx":2 @@ -81046,7 +76766,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__resource), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__resource, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__resource, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "_sa.pyx":3 @@ -81058,7 +76778,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__gzip), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gzip, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__gzip, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "_sa.pyx":5 @@ -81070,7 +76790,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_1monitor_cpu, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__monitor_cpu, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__monitor_cpu, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "_sa.pyx":9 @@ -81082,7 +76802,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_3gzip_or_text, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gzip_or_text, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__gzip_or_text, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    /* "_sa.pyx":15 @@ -81092,18 +76812,27 @@ PyMODINIT_FUNC PyInit__sa(void)   *    * include "float_list.pxi"   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__logging); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__logging); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __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_k_tuple_161), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_173), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__logger, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__logger, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/bilex.pxi":54 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/alignment.pxi":8 + * # May need to revisit if things get really tight, though. + *  + * cdef int ALIGNMENT_CODE = 1 << 16             # <<<<<<<<<<<<<< + *  + * cdef class Alignment: + */ +  __pyx_v_3_sa_ALIGNMENT_CODE = 65536; + +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/bilex.pxi":54   *     cdef id2eword, id2fword, eword2id, fword2id   *    *     def __cinit__(self, from_text=None, from_data=False, from_binary=None,             # <<<<<<<<<<<<<< @@ -81112,11 +76841,11 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  __pyx_k_41 = __pyx_t_1; +  __pyx_k_43 = __pyx_t_1;    __Pyx_GIVEREF(__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":17 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":17   * from libc.string cimport memset   *    * cdef int MIN_BOTTOM_SIZE = 32             # <<<<<<<<<<<<<< @@ -81125,7 +76854,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_MIN_BOTTOM_SIZE = 32; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":18 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":18   *    * cdef int MIN_BOTTOM_SIZE = 32   * cdef int MIN_BOTTOM_BITS = 5             # <<<<<<<<<<<<<< @@ -81134,7 +76863,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_MIN_BOTTOM_BITS = 5; -  /* "/home/paulb/workspace/cdec/python/src/sa/veb.pxi":28 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/veb.pxi":28   *         LOWER_MASK[i] = mask   *    * _init_lower_mask()             # <<<<<<<<<<<<<< @@ -81143,7 +76872,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_f_3_sa__init_lower_mask(); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":4 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":4   * from libc.stdlib cimport malloc, realloc, strtol   *    * cdef int INDEX_SHIFT = 3             # <<<<<<<<<<<<<< @@ -81152,7 +76881,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_INDEX_SHIFT = 3; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":5 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":5   *    * cdef int INDEX_SHIFT = 3   * cdef int INDEX_MASK = (1<<INDEX_SHIFT)-1             # <<<<<<<<<<<<<< @@ -81161,7 +76890,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_INDEX_MASK = ((1 << __pyx_v_3_sa_INDEX_SHIFT) - 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":87 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":87   *             return self.terminals.index(s)   *    * cdef Alphabet ALPHABET = Alphabet()             # <<<<<<<<<<<<<< @@ -81176,7 +76905,7 @@ PyMODINIT_FUNC PyInit__sa(void)    __pyx_v_3_sa_ALPHABET = ((struct __pyx_obj_3_sa_Alphabet *)__pyx_t_1);    __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":107 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":107   *     return ALPHABET.fromstring(string, terminal)   *    * def isvar(sym):             # <<<<<<<<<<<<<< @@ -81185,10 +76914,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_5isvar, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isvar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__isvar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":110 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":110   *     return sym_isvar(sym)   *    * def make_lattice(words):             # <<<<<<<<<<<<<< @@ -81197,10 +76926,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_7make_lattice, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__make_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__make_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":114 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":114   *     return tuple(((word, None, 1), ) for word in word_ids)   *    * def decode_lattice(lattice):             # <<<<<<<<<<<<<< @@ -81209,10 +76938,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_9decode_lattice, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__decode_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_lattice, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":118 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":118   *             for arc in node for node in lattice)   *    * def decode_sentence(lattice):             # <<<<<<<<<<<<<< @@ -81221,10 +76950,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_11decode_sentence, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__decode_sentence, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_sentence, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":121 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":121   *     return tuple(sym_tostring(sym) for ((sym, _, _),) in lattice)   *    * def encode_words(words):             # <<<<<<<<<<<<<< @@ -81233,10 +76962,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_13encode_words, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__encode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__encode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/sym.pxi":124 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/sym.pxi":124   *     return tuple(sym_fromstring(word, True) for word in words)   *    * def decode_words(syms):             # <<<<<<<<<<<<<< @@ -81244,10 +76973,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3_sa_15decode_words, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__decode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__decode_words, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":5 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":5   * # Much faster than the Python numbers reported there.   * # Note to reader: this code is closer to C than Python   * import gc             # <<<<<<<<<<<<<< @@ -81256,10 +76985,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__gc), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__gc, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":6 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":6   * # Note to reader: this code is closer to C than Python   * import gc   * import itertools             # <<<<<<<<<<<<<< @@ -81268,10 +76997,10 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__itertools), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__itertools, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__itertools, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":12 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":12   * from libc.math cimport fmod, ceil, floor, log   *    * from collections import defaultdict, Counter, namedtuple             # <<<<<<<<<<<<<< @@ -81292,43 +77021,31 @@ PyMODINIT_FUNC PyInit__sa(void)    __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__collections), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2);    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__defaultdict); -  if (__pyx_t_1 == NULL) { -    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__defaultdict); -    if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  } +  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__defaultdict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__defaultdict, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__defaultdict, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__Counter); -  if (__pyx_t_1 == NULL) { -    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__Counter); -    if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  } +  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__Counter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Counter, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__Counter, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__namedtuple); -  if (__pyx_t_1 == NULL) { -    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__namedtuple); -    if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  } +  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__namedtuple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__namedtuple, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__namedtuple, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 12; __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/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":14 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":14   * from collections import defaultdict, Counter, namedtuple   *    * FeatureContext = namedtuple('FeatureContext',             # <<<<<<<<<<<<<<   *     ['fphrase',   *      'ephrase',   */ -  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__namedtuple); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__namedtuple); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":15 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":15   *    * FeatureContext = namedtuple('FeatureContext',   *     ['fphrase',             # <<<<<<<<<<<<<< @@ -81388,20 +77105,20 @@ PyMODINIT_FUNC PyInit__sa(void)    __Pyx_GOTREF(__pyx_t_1);    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FeatureContext, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__FeatureContext, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":30 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":30   *     ])   *    * OnlineFeatureContext = namedtuple('OnlineFeatureContext',             # <<<<<<<<<<<<<<   *     ['fcount',   *      'fsample_count',   */ -  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__namedtuple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__namedtuple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":31 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":31   *    * OnlineFeatureContext = namedtuple('OnlineFeatureContext',   *     ['fcount',             # <<<<<<<<<<<<<< @@ -81430,9 +77147,9 @@ PyMODINIT_FUNC PyInit__sa(void)    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bilex_fe));    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_2); -  __Pyx_INCREF(((PyObject *)__pyx_n_s_152)); -  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_152)); -  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_152)); +  __Pyx_INCREF(((PyObject *)__pyx_n_s_163)); +  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_163)); +  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_163));    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_3));    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));    __pyx_t_3 = 0; @@ -81440,10 +77157,10 @@ PyMODINIT_FUNC PyInit__sa(void)    __Pyx_GOTREF(__pyx_t_3);    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_152, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s_163, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":39 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":39   *     ])   *    * cdef int PRECOMPUTE = 0             # <<<<<<<<<<<<<< @@ -81452,7 +77169,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_PRECOMPUTE = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":40 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":40   *    * cdef int PRECOMPUTE = 0   * cdef int MERGE = 1             # <<<<<<<<<<<<<< @@ -81461,7 +77178,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_MERGE = 1; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":41 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":41   * cdef int PRECOMPUTE = 0   * cdef int MERGE = 1   * cdef int BAEZA_YATES = 2             # <<<<<<<<<<<<<< @@ -81470,16 +77187,16 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_v_3_sa_BAEZA_YATES = 2; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":44 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":44   *    * # NOTE: was encoded as a non-terminal in the previous version   * cdef int EPSILON = sym_fromstring('*EPS*', True)             # <<<<<<<<<<<<<<   *    * cdef class TrieNode:   */ -  __pyx_v_3_sa_EPSILON = __pyx_f_3_sa_sym_fromstring(__pyx_k_175, 1); +  __pyx_v_3_sa_EPSILON = __pyx_f_3_sa_sym_fromstring(__pyx_k_187, 1); -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":67 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":67   *     cdef public int count   *     cdef public root   *     def __cinit__(self, extended=False):             # <<<<<<<<<<<<<< @@ -81488,47 +77205,47 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  __pyx_k_99 = __pyx_t_3; +  __pyx_k_101 = __pyx_t_3;    __Pyx_GIVEREF(__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2205 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2206   *    * # Spans are _inclusive_ on both ends [i, j]   * def span_check(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_17span_check, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_17span_check, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_check, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_check, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2213 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2214   *     return True   *    * def span_inc(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_19span_inc, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_19span_inc, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_inc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_inc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/rulefactory.pxi":2219 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/rulefactory.pxi":2220   *         k += 1   *    * def span_dec(vec, i, j):             # <<<<<<<<<<<<<<   *     k = i   *     while k <= j:   */ -  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_21span_dec, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3_sa_21span_dec, NULL, __pyx_n_s___sa); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__span_dec, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__span_dec, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":1 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":1   * cdef StringMap FD = StringMap() # Feature name dictionary             # <<<<<<<<<<<<<<   *    * INITIAL_CAPACITY = 7 # default number of features @@ -81541,25 +77258,25 @@ PyMODINIT_FUNC PyInit__sa(void)    __pyx_v_3_sa_FD = ((struct __pyx_obj_3_sa_StringMap *)__pyx_t_3);    __pyx_t_3 = 0; -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":3 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":3   * cdef StringMap FD = StringMap() # Feature name dictionary   *    * INITIAL_CAPACITY = 7 # default number of features             # <<<<<<<<<<<<<<   * INCREMENT = INITIAL_CAPACITY # double size   *    */ -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INITIAL_CAPACITY, __pyx_int_7) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__INITIAL_CAPACITY, __pyx_int_7) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} -  /* "/home/paulb/workspace/cdec/python/src/sa/features.pxi":4 +  /* "/Users/vchahun/Sandbox/cdec/python/src/sa/features.pxi":4   *    * INITIAL_CAPACITY = 7 # default number of features   * INCREMENT = INITIAL_CAPACITY # double size             # <<<<<<<<<<<<<<   *    * cdef class FeatureVector:   */ -  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__INITIAL_CAPACITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(__pyx_t_3); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INCREMENT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s__INCREMENT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;    /* "_sa.pyx":1 @@ -81569,7 +77286,7 @@ PyMODINIT_FUNC PyInit__sa(void)   */    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_GOTREF(((PyObject *)__pyx_t_3)); -  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} +  if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;    goto __pyx_L0;    __pyx_L1_error:; @@ -81608,17 +77325,32 @@ end:  }  #endif /* CYTHON_REFNANNY */ -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { +    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); +    if (unlikely(!result)) { +        PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 +            "name '%U' is not defined", name); +#else +            "name '%s' is not defined", PyString_AS_STRING(name)); +#endif +    } +    return result; +} + +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {      PyObject *result; -    result = PyObject_GetAttr(dict, name); +#if CYTHON_COMPILING_IN_CPYTHON +    result = PyDict_GetItem(__pyx_d, name); +    if (result) { +        Py_INCREF(result); +    } else { +#else +    result = PyObject_GetItem(__pyx_d, name);      if (!result) { -        if (dict != __pyx_b) { -            PyErr_Clear(); -            result = PyObject_GetAttr(__pyx_b, name); -        } -        if (!result) { -            PyErr_SetObject(PyExc_NameError, name); -        } +        PyErr_Clear(); +#endif +        result = __Pyx_GetBuiltinName(name);      }      return result;  } @@ -81632,7 +77364,7 @@ static void __Pyx_RaiseDoubleKeywordsError(          "%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)); +        PyString_AsString(kw_name));          #endif  } @@ -81653,48 +77385,72 @@ static int __Pyx_ParseOptionalKeywords(          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_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) { +            continue; +        } +        name = first_kw_arg; +        #if PY_MAJOR_VERSION < 3 +        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { +            while (*name) { +                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) +                        && _PyString_Eq(**name, key)) {                      values[name-argnames] = value; -                } else { -                    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; +                    break; +                } +                name++; +            } +            if (*name) continue; +            else { +                PyObject*** argname = argnames; +                while (argname != first_kw_arg) { +                    if ((**argname == key) || ( +                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) +                             && _PyString_Eq(**argname, key))) { +                        goto arg_passed_twice;                      } +                    argname++; +                } +            } +        } else +        #endif +        if (likely(PyUnicode_Check(key))) { +            while (*name) { +                int cmp = (**name == key) ? 0 : +                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : +                #endif +                    PyUnicode_Compare(**name, key); +                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +                if (cmp == 0) { +                    values[name-argnames] = value; +                    break;                  } +                name++;              } +            if (*name) continue; +            else { +                PyObject*** argname = argnames; +                while (argname != first_kw_arg) { +                    int cmp = (**argname == key) ? 0 : +                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 +                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : +                    #endif +                        PyUnicode_Compare(**argname, key); +                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; +                    if (cmp == 0) goto arg_passed_twice; +                    argname++; +                } +            } +        } else +            goto invalid_keyword_type; +        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); +    __Pyx_RaiseDoubleKeywordsError(function_name, key);      goto bad;  invalid_keyword_type:      PyErr_Format(PyExc_TypeError, @@ -81733,7 +77489,7 @@ static void __Pyx_RaiseArgtupleInvalid(          more_or_less = "exactly";      }      PyErr_Format(PyExc_TypeError, -                 "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)", +                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",                   func_name, more_or_less, num_expected,                   (num_expected == 1) ? "" : "s", num_found);  } @@ -81773,53 +77529,57 @@ static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyOb  static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,                          CYTHON_UNUSED PyObject *cause) {      Py_XINCREF(type); -    Py_XINCREF(value); -    Py_XINCREF(tb); -    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; -    } -    if (value == NULL) { -        value = Py_None; +    if (!value || value == Py_None) +        value = NULL; +    else          Py_INCREF(value); +    if (!tb || tb == Py_None) +        tb = NULL; +    else { +        Py_INCREF(tb); +        if (!PyTraceBack_Check(tb)) { +            PyErr_SetString(PyExc_TypeError, +                "raise: arg 3 must be a traceback or None"); +            goto raise_error; +        }      }      #if PY_VERSION_HEX < 0x02050000 -    if (!PyClass_Check(type)) +    if (PyClass_Check(type)) {      #else -    if (!PyType_Check(type)) +    if (PyType_Check(type)) {      #endif -    { -        if (value != Py_None) { +#if CYTHON_COMPILING_IN_PYPY +        if (!value) { +            Py_INCREF(Py_None); +            value = Py_None; +        } +#endif +        PyErr_NormalizeException(&type, &value, &tb); +    } else { +        if (value) {              PyErr_SetString(PyExc_TypeError,                  "instance exception may not have a separate value");              goto raise_error;          } -        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); +        if (PyInstance_Check(type)) { +            type = (PyObject*) ((PyInstanceObject*)type)->in_class;              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; -            } +        } 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); @@ -81832,6 +77592,7 @@ raise_error:  }  #else /* Python 3+ */  static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { +    PyObject* owned_instance = NULL;      if (tb == Py_None) {          tb = 0;      } else if (tb && !PyTraceBack_Check(tb)) { @@ -81849,31 +77610,55 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject          }          value = type;          type = (PyObject*) Py_TYPE(value); -    } else if (!PyExceptionClass_Check(type)) { +    } else if (PyExceptionClass_Check(type)) { +        PyObject *args; +        if (!value) +            args = PyTuple_New(0); +        else if (PyTuple_Check(value)) { +            Py_INCREF(value); +            args = value; +        } else +            args = PyTuple_Pack(1, value); +        if (!args) +            goto bad; +        owned_instance = PyEval_CallObject(type, args); +        Py_DECREF(args); +        if (!owned_instance) +            goto bad; +        value = owned_instance; +        if (!PyExceptionInstance_Check(value)) { +            PyErr_Format(PyExc_TypeError, +                         "calling %R should have returned an instance of " +                         "BaseException, not %R", +                         type, Py_TYPE(value)); +            goto bad; +        } +    } else {          PyErr_SetString(PyExc_TypeError,              "raise: exception class must be a subclass of BaseException");          goto bad;      } +#if PY_VERSION_HEX >= 0x03030000      if (cause) { +#else +    if (cause && cause != Py_None) { +#endif          PyObject *fixed_cause; -        if (PyExceptionClass_Check(cause)) { +        if (cause == Py_None) { +            fixed_cause = NULL; +        } else if (PyExceptionClass_Check(cause)) {              fixed_cause = PyObject_CallObject(cause, NULL);              if (fixed_cause == NULL)                  goto bad; -        } -        else if (PyExceptionInstance_Check(cause)) { +        } else if (PyExceptionInstance_Check(cause)) {              fixed_cause = cause;              Py_INCREF(fixed_cause); -        } -        else { +        } else {              PyErr_SetString(PyExc_TypeError,                              "exception causes must derive from "                              "BaseException");              goto bad;          } -        if (!value) { -            value = PyObject_CallObject(type, NULL); -        }          PyException_SetCause(value, fixed_cause);      }      PyErr_SetObject(type, value); @@ -81887,10 +77672,30 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject          }      }  bad: +    Py_XDECREF(owned_instance);      return;  }  #endif +static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, +                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) { +    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 CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {      if (unlikely(!type)) {          PyErr_Format(PyExc_SystemError, "Missing type object"); @@ -81910,13 +77715,17 @@ static CYTHON_INLINE int __Pyx_CheckKeywordStrings(  {      PyObject* key = 0;      Py_ssize_t pos = 0; +#if CPYTHON_COMPILING_IN_PYPY +    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) +        goto invalid_keyword; +    return 1; +#else      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_Check(key)))          #endif -            goto invalid_keyword_type; +            if (unlikely(!PyUnicode_Check(key))) +                goto invalid_keyword_type;      }      if ((!kw_allowed) && unlikely(key))          goto invalid_keyword; @@ -81925,6 +77734,7 @@ invalid_keyword_type:      PyErr_Format(PyExc_TypeError,          "%s() keywords must be strings", function_name);      return 0; +#endif  invalid_keyword:      PyErr_Format(PyExc_TypeError,      #if PY_MAJOR_VERSION < 3 @@ -81937,10 +77747,97 @@ invalid_keyword:      return 0;  } +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; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, +                                                              int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON +    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); +    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { +        PyObject *r = PyList_GET_ITEM(o, i); +        Py_INCREF(r); +        return r; +    } +    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else +    return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, +                                                              int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON +    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); +    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { +        PyObject *r = PyTuple_GET_ITEM(o, i); +        Py_INCREF(r); +        return r; +    } +    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else +    return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, +                                                     int is_list, int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON +    if (is_list || PyList_CheckExact(o)) { +        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); +        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { +            PyObject *r = PyList_GET_ITEM(o, n); +            Py_INCREF(r); +            return r; +        } +    } +    else if (PyTuple_CheckExact(o)) { +        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); +        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { +            PyObject *r = PyTuple_GET_ITEM(o, n); +            Py_INCREF(r); +            return r; +        } +    } else { +        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; +        if (likely(m && m->sq_item)) { +            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { +                Py_ssize_t l = m->sq_length(o); +                if (likely(l >= 0)) { +                    i += l; +                } else { +                    if (PyErr_ExceptionMatches(PyExc_OverflowError)) +                        PyErr_Clear(); +                    else +                        return NULL; +                } +            } +            return m->sq_item(o, i); +        } +    } +#else +    if (is_list || PySequence_Check(o)) { +        return PySequence_GetItem(o, i); +    } +#endif +    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_Append(PyObject* L, PyObject* x) { +    if (likely(PyList_CheckExact(L))) { +        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return NULL; +        Py_INCREF(Py_None); +        return Py_None; /* this is just to have an accurate signature */ +    } else { +        return __Pyx_PyObject_CallMethod1(L, __pyx_n_s__append, x); +    } +}  static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {      PyObject *local_type, *local_value, *local_tb; +#if CYTHON_COMPILING_IN_CPYTHON      PyObject *tmp_type, *tmp_value, *tmp_tb;      PyThreadState *tstate = PyThreadState_GET();      local_type = tstate->curexc_type; @@ -81949,19 +77846,27 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)      tstate->curexc_type = 0;      tstate->curexc_value = 0;      tstate->curexc_traceback = 0; +#else +    PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif      PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_COMPILING_IN_CPYTHON      if (unlikely(tstate->curexc_type)) +#else +    if (unlikely(PyErr_Occurred())) +#endif          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); +    *type = local_type; +    *value = local_value; +    *tb = local_tb; +#if CYTHON_COMPILING_IN_CPYTHON      tmp_type = tstate->exc_type;      tmp_value = tstate->exc_value;      tmp_tb = tstate->exc_traceback; @@ -81969,10 +77874,13 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)      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). */ +       these objects (DECREF may run arbitrary code). */      Py_XDECREF(tmp_type);      Py_XDECREF(tmp_value);      Py_XDECREF(tmp_tb); +#else +    PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif      return 0;  bad:      *type = 0; @@ -81988,36 +77896,150 @@ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {      PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);  } -static CYTHON_INLINE long __Pyx_div_long(long a, long b) { -    long q = a / b; -    long r = a - q*b; +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( +        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, +        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, +        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { +#if CYTHON_COMPILING_IN_CPYTHON +    PyMappingMethods* mp; +#if PY_MAJOR_VERSION < 3 +    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; +    if (likely(ms && ms->sq_slice)) { +        if (!has_cstart) { +            if (_py_start && (*_py_start != Py_None)) { +                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); +                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +            } else +                cstart = 0; +        } +        if (!has_cstop) { +            if (_py_stop && (*_py_stop != Py_None)) { +                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); +                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +            } else +                cstop = PY_SSIZE_T_MAX; +        } +        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { +            Py_ssize_t l = ms->sq_length(obj); +            if (likely(l >= 0)) { +                if (cstop < 0) { +                    cstop += l; +                    if (cstop < 0) cstop = 0; +                } +                if (cstart < 0) { +                    cstart += l; +                    if (cstart < 0) cstart = 0; +                } +            } else { +                if (PyErr_ExceptionMatches(PyExc_OverflowError)) +                    PyErr_Clear(); +                else +                    goto bad; +            } +        } +        return ms->sq_slice(obj, cstart, cstop); +    } +#endif +    mp = Py_TYPE(obj)->tp_as_mapping; +    if (likely(mp && mp->mp_subscript)) +#endif +    { +        PyObject* result; +        PyObject *py_slice, *py_start, *py_stop; +        if (_py_slice) { +            py_slice = *_py_slice; +        } else { +            PyObject* owned_start = NULL; +            PyObject* owned_stop = NULL; +            if (_py_start) { +                py_start = *_py_start; +            } else { +                if (has_cstart) { +                    owned_start = py_start = PyInt_FromSsize_t(cstart); +                    if (unlikely(!py_start)) goto bad; +                } else +                    py_start = Py_None; +            } +            if (_py_stop) { +                py_stop = *_py_stop; +            } else { +                if (has_cstop) { +                    owned_stop = py_stop = PyInt_FromSsize_t(cstop); +                    if (unlikely(!py_stop)) { +                        Py_XDECREF(owned_start); +                        goto bad; +                    } +                } else +                    py_stop = Py_None; +            } +            py_slice = PySlice_New(py_start, py_stop, Py_None); +            Py_XDECREF(owned_start); +            Py_XDECREF(owned_stop); +            if (unlikely(!py_slice)) goto bad; +        } +#if CYTHON_COMPILING_IN_CPYTHON +        result = mp->mp_subscript(obj, py_slice); +#else +        result = PyObject_GetItem(obj, py_slice); +#endif +        if (!_py_slice) { +            Py_DECREF(py_slice); +        } +        return result; +    } +    PyErr_Format(PyExc_TypeError, +        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name); +bad: +    return NULL; +} + +static CYTHON_INLINE int __Pyx_div_int(int a, int b) { +    int q = a / b; +    int r = a - q*b;      q -= ((r != 0) & ((r ^ b) < 0));      return q;  } -static CYTHON_INLINE long __Pyx_mod_long(long a, long b) { -    long r = a % b; +static CYTHON_INLINE int __Pyx_mod_int(int a, int b) { +    int r = a % b;      r += ((r != 0) & ((r ^ b) < 0)) * b;      return r;  } -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {      PyErr_Format(PyExc_ValueError, -                 "need more than %"PY_FORMAT_SIZE_T"d value%s to unpack", -                 index, (index == 1) ? "" : "s"); +                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);  } -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {      PyErr_Format(PyExc_ValueError, -                 "too many values to unpack (expected %"PY_FORMAT_SIZE_T"d)", expected); +                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack", +                 index, (index == 1) ? "" : "s");  } -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { -    if (unlikely(retval)) { -        Py_DECREF(retval); -        __Pyx_RaiseTooManyValuesError(expected); -        return -1; -    } else if (PyErr_Occurred()) { +static CYTHON_INLINE int __Pyx_IterFinish(void) { +#if CYTHON_COMPILING_IN_CPYTHON +    PyThreadState *tstate = PyThreadState_GET(); +    PyObject* exc_type = tstate->curexc_type; +    if (unlikely(exc_type)) { +        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { +            PyObject *exc_value, *exc_tb; +            exc_value = tstate->curexc_value; +            exc_tb = tstate->curexc_traceback; +            tstate->curexc_type = 0; +            tstate->curexc_value = 0; +            tstate->curexc_traceback = 0; +            Py_DECREF(exc_type); +            Py_XDECREF(exc_value); +            Py_XDECREF(exc_tb); +            return 0; +        } else { +            return -1; +        } +    } +    return 0; +#else +    if (unlikely(PyErr_Occurred())) {          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {              PyErr_Clear();              return 0; @@ -82026,14 +78048,83 @@ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {          }      }      return 0; +#endif  } +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { +    if (unlikely(retval)) { +        Py_DECREF(retval); +        __Pyx_RaiseTooManyValuesError(expected); +        return -1; +    } else { +        return __Pyx_IterFinish(); +    } +    return 0; +} +static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { +    int r; +    if (!j) return -1; +    r = PyObject_SetItem(o, j, v); +    Py_DECREF(j); +    return r; +} +static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, +                                               int is_list, int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON +    if (is_list || PyList_CheckExact(o)) { +        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); +        if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { +            PyObject* old = PyList_GET_ITEM(o, n); +            Py_INCREF(v); +            PyList_SET_ITEM(o, n, v); +            Py_DECREF(old); +            return 1; +        } +    } else { +        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; +        if (likely(m && m->sq_ass_item)) { +            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { +                Py_ssize_t l = m->sq_length(o); +                if (likely(l >= 0)) { +                    i += l; +                } else { +                    if (PyErr_ExceptionMatches(PyExc_OverflowError)) +                        PyErr_Clear(); +                    else +                        return -1; +                } +            } +            return m->sq_ass_item(o, i, v); +        } +    } +#else +#if CYTHON_COMPILING_IN_PYPY +    if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) { +#else +    if (is_list || PySequence_Check(o)) { +#endif +        return PySequence_SetItem(o, i, v); +    } +#endif +    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); +}  static double __Pyx__PyObject_AsDouble(PyObject* obj) {      PyObject* float_value; -    if (Py_TYPE(obj)->tp_as_number && Py_TYPE(obj)->tp_as_number->nb_float) { -        return PyFloat_AsDouble(obj); +#if CYTHON_COMPILING_IN_PYPY +    float_value = PyNumber_Float(obj); +#else +    PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; +    if (likely(nb) && likely(nb->nb_float)) { +        float_value = nb->nb_float(obj); +        if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { +            PyErr_Format(PyExc_TypeError, +                "__float__ returned non-float (type %.200s)", +                Py_TYPE(float_value)->tp_name); +            Py_DECREF(float_value); +            goto bad; +        }      } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {  #if PY_MAJOR_VERSION >= 3          float_value = PyFloat_FromString(obj); @@ -82048,6 +78139,7 @@ static double __Pyx__PyObject_AsDouble(PyObject* obj) {          PyTuple_SET_ITEM(args, 0, 0);          Py_DECREF(args);      } +#endif      if (likely(float_value)) {          double value = PyFloat_AS_DOUBLE(float_value);          Py_DECREF(float_value); @@ -82061,6 +78153,13 @@ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {      PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);  } +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 int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,      const char *name, int exact)  { @@ -82081,203 +78180,182 @@ static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed      return 0;  } -static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void) { -    PyErr_SetString(PyExc_TypeError, "'NoneType' object is unsubscriptable"); +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { +    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");  } -static CYTHON_INLINE int __Pyx_div_int(int a, int b) { -    int q = a / b; -    int r = a - q*b; -    q -= ((r != 0) & ((r ^ b) < 0)); -    return q; -} - -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 PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) { -    PyObject *py_import = 0; -    PyObject *empty_list = 0; -    PyObject *module = 0; -    PyObject *global_dict = 0; -    PyObject *empty_dict = 0; -    PyObject *list; -    py_import = __Pyx_GetAttrString(__pyx_b, "__import__"); -    if (!py_import) -        goto bad; -    if (from_list) -        list = from_list; -    else { -        empty_list = PyList_New(0); -        if (!empty_list) +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(index); +    } +} + +static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, +                                             int is_tuple, int has_known_size, int decref_tuple) { +    Py_ssize_t index; +    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; +    if (!is_tuple && unlikely(!PyTuple_Check(tuple))) { +        iternextfunc iternext; +        iter = PyObject_GetIter(tuple); +        if (unlikely(!iter)) goto bad; +        if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } +        iternext = Py_TYPE(iter)->tp_iternext; +        value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } +        value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } +        if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; +        Py_DECREF(iter); +    } else { +        if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) { +            __Pyx_UnpackTupleError(tuple, 2);              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; -    #if PY_VERSION_HEX >= 0x02050000 -    { -        #if PY_MAJOR_VERSION >= 3 -        if (level == -1) { -            if (strchr(__Pyx_MODULE_NAME, '.')) { -                /* try package relative import first */ -                PyObject *py_level = PyInt_FromLong(1); -                if (!py_level) -                    goto bad; -                module = PyObject_CallFunctionObjArgs(py_import, -                    name, global_dict, empty_dict, list, py_level, NULL); -                Py_DECREF(py_level); -                if (!module) { -                    if (!PyErr_ExceptionMatches(PyExc_ImportError)) -                        goto bad; -                    PyErr_Clear(); -                } -            } -            level = 0; /* try absolute import on failure */          } -        #endif -        if (!module) { -            PyObject *py_level = PyInt_FromLong(level); -            if (!py_level) -                goto bad; -            module = PyObject_CallFunctionObjArgs(py_import, -                name, global_dict, empty_dict, list, py_level, NULL); -            Py_DECREF(py_level); -        } -    } -    #else -    if (level>0) { -        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); -        goto bad; +#if CYTHON_COMPILING_IN_PYPY +        value1 = PySequence_ITEM(tuple, 0); +        if (unlikely(!value1)) goto bad; +        value2 = PySequence_ITEM(tuple, 1); +        if (unlikely(!value2)) goto bad; +#else +        value1 = PyTuple_GET_ITEM(tuple, 0); +        value2 = PyTuple_GET_ITEM(tuple, 1); +        Py_INCREF(value1); +        Py_INCREF(value2); +#endif +        if (decref_tuple) { Py_DECREF(tuple); }      } -    module = PyObject_CallFunctionObjArgs(py_import, -        name, global_dict, empty_dict, list, NULL); -    #endif +    *pvalue1 = value1; +    *pvalue2 = value2; +    return 0; +unpacking_failed: +    if (!has_known_size && __Pyx_IterFinish() == 0) +        __Pyx_RaiseNeedMoreValuesError(index);  bad: -    Py_XDECREF(empty_list); -    Py_XDECREF(py_import); -    Py_XDECREF(empty_dict); -    return module; +    Py_XDECREF(iter); +    Py_XDECREF(value1); +    Py_XDECREF(value2); +    if (decref_tuple) { Py_XDECREF(tuple); } +    return -1;  } -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) { -#if PY_MAJOR_VERSION < 3 -    PyErr_Format(PyExc_ImportError, "cannot import name %.230s", -                 PyString_AsString(name)); -#else -    PyErr_Format(PyExc_ImportError, "cannot import name %S", name); +static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, +                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) { +    is_dict = is_dict || likely(PyDict_CheckExact(iterable)); +    *p_source_is_dict = is_dict; +#if !CYTHON_COMPILING_IN_PYPY +    if (is_dict) { +        *p_orig_length = PyDict_Size(iterable); +        Py_INCREF(iterable); +        return iterable; +    }  #endif -} - -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -    if (s1 == s2) { -        return (equals == Py_EQ); -    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { -        if (PyBytes_GET_SIZE(s1) != PyBytes_GET_SIZE(s2)) { -            return (equals == Py_NE); -        } else if (PyBytes_GET_SIZE(s1) == 1) { -            if (equals == Py_EQ) -                return (PyBytes_AS_STRING(s1)[0] == PyBytes_AS_STRING(s2)[0]); -            else -                return (PyBytes_AS_STRING(s1)[0] != PyBytes_AS_STRING(s2)[0]); +    *p_orig_length = 0; +    if (method_name) { +        PyObject* iter; +        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); +        if (!iterable) +            return NULL; +#if !CYTHON_COMPILING_IN_PYPY +        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) +            return iterable; +#endif +        iter = PyObject_GetIter(iterable); +        Py_DECREF(iterable); +        return iter; +    } +    return PyObject_GetIter(iterable); +} +static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* iter_obj, Py_ssize_t orig_length, Py_ssize_t* ppos, +                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { +    PyObject* next_item; +#if !CYTHON_COMPILING_IN_PYPY +    if (source_is_dict) { +        PyObject *key, *value; +        if (unlikely(orig_length != PyDict_Size(iter_obj))) { +            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); +            return -1; +        } +        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { +            return 0; +        } +        if (pitem) { +            PyObject* tuple = PyTuple_New(2); +            if (unlikely(!tuple)) { +                return -1; +            } +            Py_INCREF(key); +            Py_INCREF(value); +            PyTuple_SET_ITEM(tuple, 0, key); +            PyTuple_SET_ITEM(tuple, 1, value); +            *pitem = tuple;          } else { -            int result = memcmp(PyBytes_AS_STRING(s1), PyBytes_AS_STRING(s2), (size_t)PyBytes_GET_SIZE(s1)); -            return (equals == Py_EQ) ? (result == 0) : (result != 0); +            if (pkey) { +                Py_INCREF(key); +                *pkey = key; +            } +            if (pvalue) { +                Py_INCREF(value); +                *pvalue = value; +            } +        } +        return 1; +    } else if (PyTuple_CheckExact(iter_obj)) { +        Py_ssize_t pos = *ppos; +        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; +        *ppos = pos + 1; +        next_item = PyTuple_GET_ITEM(iter_obj, pos); +        Py_INCREF(next_item); +    } else if (PyList_CheckExact(iter_obj)) { +        Py_ssize_t pos = *ppos; +        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; +        *ppos = pos + 1; +        next_item = PyList_GET_ITEM(iter_obj, pos); +        Py_INCREF(next_item); +    } else +#endif +    { +        next_item = PyIter_Next(iter_obj); +        if (unlikely(!next_item)) { +            return __Pyx_IterFinish();          } -    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { -        return (equals == Py_NE); -    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { -        return (equals == Py_NE); -    } else { -        int result; -        PyObject* py_result = PyObject_RichCompare(s1, s2, equals); -        if (!py_result) -            return -1; -        result = __Pyx_PyObject_IsTrue(py_result); -        Py_DECREF(py_result); -        return result;      } -} - -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -    if (s1 == s2) { -        return (equals == Py_EQ); -    } else if (PyUnicode_CheckExact(s1) & PyUnicode_CheckExact(s2)) { -        #if CYTHON_PEP393_ENABLED -        if ((PyUnicode_READY(s1) < 0) || (PyUnicode_READY(s2) < 0)) +    if (pitem) { +        *pitem = next_item; +    } else if (pkey && pvalue) { +        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))              return -1; -        if (PyUnicode_GET_LENGTH(s1) != PyUnicode_GET_LENGTH(s2)) { -            return (equals == Py_NE); -        } else if (PyUnicode_GET_LENGTH(s1) == 1) { -            Py_UCS4 ch1 = PyUnicode_READ_CHAR(s1, 0); -            Py_UCS4 ch2 = PyUnicode_READ_CHAR(s2, 0); -            return (equals == Py_EQ) ? (ch1 == ch2) : (ch1 != ch2); -        #else -        if (PyUnicode_GET_SIZE(s1) != PyUnicode_GET_SIZE(s2)) { -            return (equals == Py_NE); -        } else if (PyUnicode_GET_SIZE(s1) == 1) { -            Py_UNICODE ch1 = PyUnicode_AS_UNICODE(s1)[0]; -            Py_UNICODE ch2 = PyUnicode_AS_UNICODE(s2)[0]; -            return (equals == Py_EQ) ? (ch1 == ch2) : (ch1 != ch2); -        #endif -        } else { -            int result = PyUnicode_Compare(s1, s2); -            if ((result == -1) && unlikely(PyErr_Occurred())) -                return -1; -            return (equals == Py_EQ) ? (result == 0) : (result != 0); -        } -    } else if ((s1 == Py_None) & PyUnicode_CheckExact(s2)) { -        return (equals == Py_NE); -    } else if ((s2 == Py_None) & PyUnicode_CheckExact(s1)) { -        return (equals == Py_NE); +    } else if (pkey) { +        *pkey = next_item;      } else { -        int result; -        PyObject* py_result = PyObject_RichCompare(s1, s2, equals); -        if (!py_result) -            return -1; -        result = __Pyx_PyObject_IsTrue(py_result); -        Py_DECREF(py_result); -        return result; +        *pvalue = next_item;      } +    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 PyObject *  __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)  { -    if (op->func_doc == NULL && op->func.m_ml->ml_doc) { +    if (unlikely(op->func_doc == NULL)) { +        if (op->func.m_ml->ml_doc) {  #if PY_MAJOR_VERSION >= 3 -        op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); +            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);  #else -        op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); +            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);  #endif -    } -    if (op->func_doc == 0) { -        Py_INCREF(Py_None); -        return Py_None; +            if (unlikely(op->func_doc == NULL)) +                return NULL; +        } else { +            Py_INCREF(Py_None); +            return Py_None; +        }      }      Py_INCREF(op->func_doc);      return op->func_doc; @@ -82287,22 +78365,23 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)  {      PyObject *tmp = op->func_doc;      if (value == NULL) -        op->func_doc = Py_None; /* Mark as deleted */ -    else -        op->func_doc = value; -    Py_INCREF(op->func_doc); +        value = Py_None; /* Mark as deleted */ +    Py_INCREF(value); +    op->func_doc = value;      Py_XDECREF(tmp);      return 0;  }  static PyObject *  __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)  { -    if (op->func_name == NULL) { +    if (unlikely(op->func_name == NULL)) {  #if PY_MAJOR_VERSION >= 3          op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);  #else          op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);  #endif +        if (unlikely(op->func_name == NULL)) +            return NULL;      }      Py_INCREF(op->func_name);      return op->func_name; @@ -82312,9 +78391,9 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)  {      PyObject *tmp;  #if PY_MAJOR_VERSION >= 3 -    if (value == NULL || !PyUnicode_Check(value)) { +    if (unlikely(value == NULL || !PyUnicode_Check(value))) {  #else -    if (value == NULL || !PyString_Check(value)) { +    if (unlikely(value == NULL || !PyString_Check(value))) {  #endif          PyErr_SetString(PyExc_TypeError,                          "__name__ must be set to a string object"); @@ -82327,6 +78406,31 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)      return 0;  }  static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) +{ +    Py_INCREF(op->func_qualname); +    return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) +{ +    PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 +    if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else +    if (unlikely(value == NULL || !PyString_Check(value))) { +#endif +        PyErr_SetString(PyExc_TypeError, +                        "__qualname__ must be set to a string object"); +        return -1; +    } +    tmp = op->func_qualname; +    Py_INCREF(value); +    op->func_qualname = value; +    Py_XDECREF(tmp); +    return 0; +} +static PyObject *  __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)  {      PyObject *self; @@ -82339,9 +78443,9 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure  static PyObject *  __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)  { -    if (op->func_dict == NULL) { +    if (unlikely(op->func_dict == NULL)) {          op->func_dict = PyDict_New(); -        if (op->func_dict == NULL) +        if (unlikely(op->func_dict == NULL))              return NULL;      }      Py_INCREF(op->func_dict); @@ -82351,12 +78455,12 @@ static int  __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)  {      PyObject *tmp; -    if (value == NULL) { +    if (unlikely(value == NULL)) {          PyErr_SetString(PyExc_TypeError,                 "function's dictionary may not be deleted");          return -1;      } -    if (!PyDict_Check(value)) { +    if (unlikely(!PyDict_Check(value))) {          PyErr_SetString(PyExc_TypeError,                 "setting function's dictionary to a non-dict");          return -1; @@ -82387,29 +78491,111 @@ __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)      Py_INCREF(result);      return result;  } +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { +    PyObject *res = op->defaults_getter((PyObject *) op); +    if (unlikely(!res)) +        return -1; +    op->defaults_tuple = PyTuple_GET_ITEM(res, 0); +    Py_INCREF(op->defaults_tuple); +    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); +    Py_INCREF(op->defaults_kwdict); +    Py_DECREF(res); +    return 0; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { +    PyObject* tmp; +    if (!value) { +        value = Py_None; +    } else if (value != Py_None && !PyTuple_Check(value)) { +        PyErr_SetString(PyExc_TypeError, +                        "__defaults__ must be set to a tuple object"); +        return -1; +    } +    Py_INCREF(value); +    tmp = op->defaults_tuple; +    op->defaults_tuple = value; +    Py_XDECREF(tmp); +    return 0; +}  static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) -{ -    if (op->defaults_tuple) { -        Py_INCREF(op->defaults_tuple); -        return op->defaults_tuple; -    } -    if (op->defaults_getter) { -        PyObject *res = op->defaults_getter((PyObject *) op); -        if (res) { -            Py_INCREF(res); -            op->defaults_tuple = res; +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { +    PyObject* result = op->defaults_tuple; +    if (unlikely(!result)) { +        if (op->defaults_getter) { +            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; +            result = op->defaults_tuple; +        } else { +            result = Py_None;          } -        return res;      } -    Py_INCREF(Py_None); -    return Py_None; +    Py_INCREF(result); +    return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { +    PyObject* tmp; +    if (!value) { +        value = Py_None; +    } else if (value != Py_None && !PyDict_Check(value)) { +        PyErr_SetString(PyExc_TypeError, +                        "__kwdefaults__ must be set to a dict object"); +        return -1; +    } +    Py_INCREF(value); +    tmp = op->defaults_kwdict; +    op->defaults_kwdict = value; +    Py_XDECREF(tmp); +    return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { +    PyObject* result = op->defaults_kwdict; +    if (unlikely(!result)) { +        if (op->defaults_getter) { +            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; +            result = op->defaults_kwdict; +        } else { +            result = Py_None; +        } +    } +    Py_INCREF(result); +    return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { +    PyObject* tmp; +    if (!value || value == Py_None) { +        value = NULL; +    } else if (!PyDict_Check(value)) { +        PyErr_SetString(PyExc_TypeError, +                        "__annotations__ must be set to a dict object"); +        return -1; +    } +    Py_XINCREF(value); +    tmp = op->func_annotations; +    op->func_annotations = value; +    Py_XDECREF(tmp); +    return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { +    PyObject* result = op->func_annotations; +    if (unlikely(!result)) { +        result = PyDict_New(); +        if (unlikely(!result)) return NULL; +        op->func_annotations = result; +    } +    Py_INCREF(result); +    return result;  }  static PyGetSetDef __pyx_CyFunction_getsets[] = {      {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},      {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},      {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},      {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, +    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},      {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},      {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},      {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, @@ -82419,8 +78605,10 @@ static PyGetSetDef __pyx_CyFunction_getsets[] = {      {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},      {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},      {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, -    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, 0, 0, 0}, -    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, 0, 0, 0}, +    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, +    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, +    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, +    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},      {0, 0, 0, 0, 0}  };  #ifndef PY_WRITE_RESTRICTED /* < Py2.5 */ @@ -82443,7 +78631,7 @@ static PyMethodDef __pyx_CyFunction_methods[] = {      {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},      {0, 0, 0, 0}  }; -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, +static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,                                        PyObject *closure, PyObject *module, PyObject* code) {      __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);      if (op == NULL) @@ -82458,6 +78646,8 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f      op->func.m_module = module;      op->func_dict = NULL;      op->func_name = NULL; +    Py_INCREF(qualname); +    op->func_qualname = qualname;      op->func_doc = NULL;      op->func_classobj = NULL;      Py_XINCREF(code); @@ -82465,7 +78655,9 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f      op->defaults_pyobjects = 0;      op->defaults = NULL;      op->defaults_tuple = NULL; +    op->defaults_kwdict = NULL;      op->defaults_getter = NULL; +    op->func_annotations = NULL;      PyObject_GC_Track(op);      return (PyObject *) op;  } @@ -82476,10 +78668,13 @@ __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)      Py_CLEAR(m->func.m_module);      Py_CLEAR(m->func_dict);      Py_CLEAR(m->func_name); +    Py_CLEAR(m->func_qualname);      Py_CLEAR(m->func_doc);      Py_CLEAR(m->func_code);      Py_CLEAR(m->func_classobj);      Py_CLEAR(m->defaults_tuple); +    Py_CLEAR(m->defaults_kwdict); +    Py_CLEAR(m->func_annotations);      if (m->defaults) {          PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);          int i; @@ -82504,10 +78699,12 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit,      Py_VISIT(m->func.m_module);      Py_VISIT(m->func_dict);      Py_VISIT(m->func_name); +    Py_VISIT(m->func_qualname);      Py_VISIT(m->func_doc);      Py_VISIT(m->func_code);      Py_VISIT(m->func_classobj);      Py_VISIT(m->defaults_tuple); +    Py_VISIT(m->defaults_kwdict);      if (m->defaults) {          PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);          int i; @@ -82536,15 +78733,64 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj  static PyObject*  __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)  { -    PyObject *func_name = __Pyx_CyFunction_get_name(op);  #if PY_MAJOR_VERSION >= 3      return PyUnicode_FromFormat("<cyfunction %U at %p>", -                                func_name, (void *)op); +                                op->func_qualname, (void *)op);  #else      return PyString_FromFormat("<cyfunction %s at %p>", -                               PyString_AsString(func_name), (void *)op); +                               PyString_AsString(op->func_qualname), (void *)op);  #endif  } +#if CYTHON_COMPILING_IN_PYPY +static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { +    PyCFunctionObject* f = (PyCFunctionObject*)func; +    PyCFunction meth = PyCFunction_GET_FUNCTION(func); +    PyObject *self = PyCFunction_GET_SELF(func); +    Py_ssize_t size; +    switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) { +    case METH_VARARGS: +        if (likely(kw == NULL) || PyDict_Size(kw) == 0) +            return (*meth)(self, arg); +        break; +    case METH_VARARGS | METH_KEYWORDS: +        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); +    case METH_NOARGS: +        if (likely(kw == NULL) || PyDict_Size(kw) == 0) { +            size = PyTuple_GET_SIZE(arg); +            if (size == 0) +                return (*meth)(self, NULL); +            PyErr_Format(PyExc_TypeError, +                "%.200s() takes no arguments (%zd given)", +                f->m_ml->ml_name, size); +            return NULL; +        } +        break; +    case METH_O: +        if (likely(kw == NULL) || PyDict_Size(kw) == 0) { +            size = PyTuple_GET_SIZE(arg); +            if (size == 1) +                return (*meth)(self, PyTuple_GET_ITEM(arg, 0)); +            PyErr_Format(PyExc_TypeError, +                "%.200s() takes exactly one argument (%zd given)", +                f->m_ml->ml_name, size); +            return NULL; +        } +        break; +    default: +        PyErr_SetString(PyExc_SystemError, "Bad call flags in " +                        "__Pyx_CyFunction_Call. METH_OLDARGS is no " +                        "longer supported!"); +        return NULL; +    } +    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", +                 f->m_ml->ml_name); +    return NULL; +} +#else +static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { +	return PyCFunction_Call(func, arg, kw); +} +#endif  static PyTypeObject __pyx_CyFunctionType_type = {      PyVarObject_HEAD_INIT(0, 0)      __Pyx_NAMESTR("cython_function_or_method"), /*tp_name*/ @@ -82564,7 +78810,7 @@ static PyTypeObject __pyx_CyFunctionType_type = {      0,                                  /*tp_as_sequence*/      0,                                  /*tp_as_mapping*/      0,                                  /*tp_hash*/ -    __Pyx_PyCFunction_Call,             /*tp_call*/ +    __Pyx_CyFunction_Call,              /*tp_call*/      0,                                  /*tp_str*/      0,                                  /*tp_getattro*/      0,                                  /*tp_setattro*/ @@ -82600,29 +78846,198 @@ static PyTypeObject __pyx_CyFunctionType_type = {      0,                                  /*tp_version_tag*/  #endif  }; -static int __Pyx_CyFunction_init(void) -{ +static int __Pyx_CyFunction_init(void) { +#if !CYTHON_COMPILING_IN_PYPY +    __pyx_CyFunctionType_type.tp_call = PyCFunction_Call; +#endif      if (PyType_Ready(&__pyx_CyFunctionType_type) < 0)          return -1;      __pyx_CyFunctionType = &__pyx_CyFunctionType_type;      return 0;  } -void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) -{ +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {      __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;      m->defaults = PyMem_Malloc(size);      if (!m->defaults)          return PyErr_NoMemory(); -    memset(m->defaults, 0, sizeof(size)); +    memset(m->defaults, 0, size);      m->defaults_pyobjects = pyobjects;      return m->defaults;  } -static void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) -{ +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {      __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;      m->defaults_tuple = tuple;      Py_INCREF(tuple);  } +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { +    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +    m->defaults_kwdict = dict; +    Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { +    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; +    m->func_annotations = dict; +    Py_INCREF(dict); +} + +static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02040000 +    if (likely(PyList_CheckExact(L)) +        && likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) { +        Py_SIZE(L) -= 1; +        return PyList_GET_ITEM(L, PyList_GET_SIZE(L)); +    } +#if PY_VERSION_HEX >= 0x02050000 +    else if (Py_TYPE(L) == (&PySet_Type)) { +        return PySet_Pop(L); +    } +#endif +#endif +    return __Pyx_PyObject_CallMethod0(L, __pyx_n_s__pop); +} + +static int __Pyx_SetVtable(PyObject *dict, void *vtable) { +#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) +    PyObject *ob = PyCapsule_New(vtable, 0, 0); +#else +    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); +#endif +    if (!ob) +        goto bad; +    if (PyDict_SetItem(dict, __pyx_n_s____pyx_vtable__, ob) < 0) +        goto bad; +    Py_DECREF(ob); +    return 0; +bad: +    Py_XDECREF(ob); +    return -1; +} + +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { +    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); +    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { +        PyErr_Format(PyExc_ImportError, +        #if PY_MAJOR_VERSION < 3 +            "cannot import name %.230s", PyString_AS_STRING(name)); +        #else +            "cannot import name %S", name); +        #endif +    } +    return value; +} + +static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON +    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); +#else +    PyErr_GetExcInfo(type, value, tb); +#endif +} +static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON +    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); +#else +    PyErr_SetExcInfo(type, value, tb); +#endif +} + +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { +    PyObject *empty_list = 0; +    PyObject *module = 0; +    PyObject *global_dict = 0; +    PyObject *empty_dict = 0; +    PyObject *list; +    #if PY_VERSION_HEX < 0x03030000 +    PyObject *py_import; +    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); +    if (!py_import) +        goto bad; +    #endif +    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; +    #if PY_VERSION_HEX >= 0x02050000 +    { +        #if PY_MAJOR_VERSION >= 3 +        if (level == -1) { +            if (strchr(__Pyx_MODULE_NAME, '.')) { +                #if PY_VERSION_HEX < 0x03030000 +                PyObject *py_level = PyInt_FromLong(1); +                if (!py_level) +                    goto bad; +                module = PyObject_CallFunctionObjArgs(py_import, +                    name, global_dict, empty_dict, list, py_level, NULL); +                Py_DECREF(py_level); +                #else +                module = PyImport_ImportModuleLevelObject( +                    name, global_dict, empty_dict, list, 1); +                #endif +                if (!module) { +                    if (!PyErr_ExceptionMatches(PyExc_ImportError)) +                        goto bad; +                    PyErr_Clear(); +                } +            } +            level = 0; /* try absolute import on failure */ +        } +        #endif +        if (!module) { +            #if PY_VERSION_HEX < 0x03030000 +            PyObject *py_level = PyInt_FromLong(level); +            if (!py_level) +                goto bad; +            module = PyObject_CallFunctionObjArgs(py_import, +                name, global_dict, empty_dict, list, py_level, NULL); +            Py_DECREF(py_level); +            #else +            module = PyImport_ImportModuleLevelObject( +                name, global_dict, empty_dict, list, level); +            #endif +        } +    } +    #else +    if (level>0) { +        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4."); +        goto bad; +    } +    module = PyObject_CallFunctionObjArgs(py_import, +        name, global_dict, empty_dict, list, NULL); +    #endif +bad: +    #if PY_VERSION_HEX < 0x03030000 +    Py_XDECREF(py_import); +    #endif +    Py_XDECREF(empty_list); +    Py_XDECREF(empty_dict); +    return module; +}  static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {      const unsigned char neg_one = (unsigned char)-1, const_zero = 0; @@ -82814,10 +79229,15 @@ static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {      return (int)__Pyx_PyInt_AsLong(x);  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -82830,6 +79250,16 @@ static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(unsigned long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to unsigned long"); @@ -82837,6 +79267,17 @@ static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {              }              return (unsigned long)PyLong_AsUnsignedLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(unsigned long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (unsigned long)PyLong_AsLong(x);          }      } else { @@ -82849,10 +79290,15 @@ static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {      }  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -82865,6 +79311,16 @@ static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObje  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to unsigned PY_LONG_LONG"); @@ -82872,6 +79328,17 @@ static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObje              }              return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);          }      } else { @@ -82884,10 +79351,15 @@ static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObje      }  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -82900,6 +79372,16 @@ static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to long"); @@ -82907,6 +79389,17 @@ static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {              }              return (long)PyLong_AsUnsignedLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(long) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (long)PyLong_AsLong(x);          }      } else { @@ -82919,10 +79412,15 @@ static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {      }  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -82935,6 +79433,16 @@ static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to PY_LONG_LONG"); @@ -82942,6 +79450,17 @@ static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {              }              return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (PY_LONG_LONG)PyLong_AsLongLong(x);          }      } else { @@ -82954,10 +79473,15 @@ static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {      }  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -82970,6 +79494,16 @@ static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(signed long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to signed long"); @@ -82977,6 +79511,17 @@ static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {              }              return (signed long)PyLong_AsUnsignedLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(signed long)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (signed long)PyLong_AsLong(x);          }      } else { @@ -82989,10 +79534,15 @@ static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {      }  } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif  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 PY_MAJOR_VERSION < 3      if (likely(PyInt_Check(x))) {          long val = PyInt_AS_LONG(x);          if (is_unsigned && unlikely(val < 0)) { @@ -83005,6 +79555,16 @@ static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject*  #endif      if (likely(PyLong_Check(x))) {          if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              if (unlikely(Py_SIZE(x) < 0)) {                  PyErr_SetString(PyExc_OverflowError,                                  "can't convert negative value to signed PY_LONG_LONG"); @@ -83012,6 +79572,17 @@ static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject*              }              return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);          } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +            if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { +                switch (Py_SIZE(x)) { +                    case  0: return 0; +                    case  1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                    case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; +                } +            } +#endif +#endif              return (signed PY_LONG_LONG)PyLong_AsLongLong(x);          }      } else { @@ -83024,27 +79595,9 @@ static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject*      }  } -static void __Pyx_WriteUnraisable(const char *name, int clineno, -                                  int lineno, const char *filename) { -    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 CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {      PyObject *tmp_type, *tmp_value, *tmp_tb; +#if CYTHON_COMPILING_IN_CPYTHON      PyThreadState *tstate = PyThreadState_GET();      tmp_type = tstate->exc_type;      tmp_value = tstate->exc_value; @@ -83052,6 +79605,10 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,      tstate->exc_type = *type;      tstate->exc_value = *value;      tstate->exc_traceback = *tb; +#else +    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); +    PyErr_SetExcInfo(*type, *value, *tb); +#endif      *type = tmp_type;      *value = tmp_value;      *tb = tmp_tb; @@ -83061,9 +79618,70 @@ static PyObject *__Pyx_Generator_Next(PyObject *self);  static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value);  static PyObject *__Pyx_Generator_Close(PyObject *self);  static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args); +static PyTypeObject *__pyx_GeneratorType = 0; +#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) +#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) +#if 1 || PY_VERSION_HEX < 0x030300B0 +static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { +    PyObject *et, *ev, *tb; +    PyObject *value = NULL; +    __Pyx_ErrFetch(&et, &ev, &tb); +    if (!et) { +        Py_XDECREF(tb); +        Py_XDECREF(ev); +        Py_INCREF(Py_None); +        *pvalue = Py_None; +        return 0; +    } +    if (unlikely(et != PyExc_StopIteration) && +            unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) { +        __Pyx_ErrRestore(et, ev, tb); +        return -1; +    } +    if (likely(et == PyExc_StopIteration)) { +        if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) { +            if (!ev) { +                Py_INCREF(Py_None); +                ev = Py_None; +            } +            Py_XDECREF(tb); +            Py_DECREF(et); +            *pvalue = ev; +            return 0; +        } +    } +    PyErr_NormalizeException(&et, &ev, &tb); +    if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) { +        __Pyx_ErrRestore(et, ev, tb); +        return -1; +    } +    Py_XDECREF(tb); +    Py_DECREF(et); +#if PY_VERSION_HEX >= 0x030300A0 +    value = ((PyStopIterationObject *)ev)->value; +    Py_INCREF(value); +    Py_DECREF(ev); +#else +    { +        PyObject* args = PyObject_GetAttr(ev, __pyx_n_s__args); +        Py_DECREF(ev); +        if (likely(args)) { +            value = PyObject_GetItem(args, 0); +            Py_DECREF(args); +        } +        if (unlikely(!value)) { +            __Pyx_ErrRestore(NULL, NULL, NULL); +            Py_INCREF(Py_None); +            value = Py_None; +        } +    } +#endif +    *pvalue = value; +    return 0; +} +#endif  static CYTHON_INLINE -void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) -{ +void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) {      PyObject *exc_type = self->exc_type;      PyObject *exc_value = self->exc_value;      PyObject *exc_traceback = self->exc_traceback; @@ -83075,14 +79693,18 @@ void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self)      Py_XDECREF(exc_traceback);  }  static CYTHON_INLINE -PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) -{ -    PyObject *retval; -    if (unlikely(self->is_running)) { +int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) { +    if (unlikely(gen->is_running)) {          PyErr_SetString(PyExc_ValueError,                          "generator already executing"); -        return NULL; +        return 1;      } +    return 0; +} +static CYTHON_INLINE +PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) { +    PyObject *retval; +    assert(!self->is_running);      if (unlikely(self->resume_label == 0)) {          if (unlikely(value && value != Py_None)) {              PyErr_SetString(PyExc_TypeError, @@ -83095,81 +79717,240 @@ PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value)          PyErr_SetNone(PyExc_StopIteration);          return NULL;      } -    if (value) -        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); -    else +    if (value) { +#if CYTHON_COMPILING_IN_PYPY +#else +        /* Generators always return to their most recent caller, not +         * necessarily their creator. */ +        if (self->exc_traceback) { +            PyThreadState *tstate = PyThreadState_GET(); +            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; +            PyFrameObject *f = tb->tb_frame; +            Py_XINCREF(tstate->frame); +            assert(f->f_back == NULL); +            f->f_back = tstate->frame; +        } +#endif +        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, +                            &self->exc_traceback); +    } else {          __Pyx_Generator_ExceptionClear(self); +    }      self->is_running = 1;      retval = self->body((PyObject *) self, value);      self->is_running = 0; -    if (retval) -        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); -    else +    if (retval) { +        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, +                            &self->exc_traceback); +#if CYTHON_COMPILING_IN_PYPY +#else +        /* Don't keep the reference to f_back any longer than necessary.  It +         * may keep a chain of frames alive or it could create a reference +         * cycle. */ +        if (self->exc_traceback) { +            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; +            PyFrameObject *f = tb->tb_frame; +            Py_CLEAR(f->f_back); +        } +#endif +    } else {          __Pyx_Generator_ExceptionClear(self); +    }      return retval;  } -static PyObject *__Pyx_Generator_Next(PyObject *self) -{ -    return __Pyx_Generator_SendEx((__pyx_GeneratorObject *) self, Py_None); +static CYTHON_INLINE +PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) { +    PyObject *ret; +    PyObject *val = NULL; +    __Pyx_Generator_Undelegate(gen); +    __Pyx_PyGen_FetchStopIterationValue(&val); +    ret = __Pyx_Generator_SendEx(gen, val); +    Py_XDECREF(val); +    return ret; +} +static PyObject *__Pyx_Generator_Next(PyObject *self) { +    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; +    PyObject *yf = gen->yieldfrom; +    if (unlikely(__Pyx_Generator_CheckRunning(gen))) +        return NULL; +    if (yf) { +        PyObject *ret; +        gen->is_running = 1; +        ret = Py_TYPE(yf)->tp_iternext(yf); +        gen->is_running = 0; +        if (likely(ret)) { +            return ret; +        } +        return __Pyx_Generator_FinishDelegation(gen); +    } +    return __Pyx_Generator_SendEx(gen, Py_None);  } -static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) -{ -    return __Pyx_Generator_SendEx((__pyx_GeneratorObject *) self, value); +static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) { +    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self; +    PyObject *yf = gen->yieldfrom; +    if (unlikely(__Pyx_Generator_CheckRunning(gen))) +        return NULL; +    if (yf) { +        PyObject *ret; +        gen->is_running = 1; +        if (__Pyx_Generator_CheckExact(yf)) { +            ret = __Pyx_Generator_Send(yf, value); +        } else { +            if (value == Py_None) +                ret = PyIter_Next(yf); +            else +                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s__send, value); +        } +        gen->is_running = 0; +        if (likely(ret)) { +            return ret; +        } +        return __Pyx_Generator_FinishDelegation(gen); +    } +    return __Pyx_Generator_SendEx(gen, value);  } -static PyObject *__Pyx_Generator_Close(PyObject *self) -{ -    __pyx_GeneratorObject *generator = (__pyx_GeneratorObject *) self; -    PyObject *retval; +static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) { +    PyObject *retval = NULL; +    int err = 0; +    if (__Pyx_Generator_CheckExact(yf)) { +        retval = __Pyx_Generator_Close(yf); +        if (!retval) +            return -1; +    } else { +        PyObject *meth; +        gen->is_running = 1; +        meth = PyObject_GetAttr(yf, __pyx_n_s__close); +        if (unlikely(!meth)) { +            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { +                PyErr_WriteUnraisable(yf); +            } +            PyErr_Clear(); +        } else { +            retval = PyObject_CallFunction(meth, NULL); +            Py_DECREF(meth); +            if (!retval) +                err = -1; +        } +        gen->is_running = 0; +    } +    Py_XDECREF(retval); +    return err; +} +static PyObject *__Pyx_Generator_Close(PyObject *self) { +    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +    PyObject *retval, *raised_exception; +    PyObject *yf = gen->yieldfrom; +    int err = 0; +    if (unlikely(__Pyx_Generator_CheckRunning(gen))) +        return NULL; +    if (yf) { +        Py_INCREF(yf); +        err = __Pyx_Generator_CloseIter(gen, yf); +        __Pyx_Generator_Undelegate(gen); +        Py_DECREF(yf); +    } +    if (err == 0)  #if PY_VERSION_HEX < 0x02050000 -    PyErr_SetNone(PyExc_StopIteration); +        PyErr_SetNone(PyExc_StopIteration);  #else -    PyErr_SetNone(PyExc_GeneratorExit); +        PyErr_SetNone(PyExc_GeneratorExit);  #endif -    retval = __Pyx_Generator_SendEx(generator, NULL); +    retval = __Pyx_Generator_SendEx(gen, NULL);      if (retval) {          Py_DECREF(retval);          PyErr_SetString(PyExc_RuntimeError,                          "generator ignored GeneratorExit");          return NULL;      } -#if PY_VERSION_HEX < 0x02050000 -    if (PyErr_ExceptionMatches(PyExc_StopIteration)) -#else -    if (PyErr_ExceptionMatches(PyExc_StopIteration) -        || PyErr_ExceptionMatches(PyExc_GeneratorExit)) +    raised_exception = PyErr_Occurred(); +    if (!raised_exception +        || raised_exception == PyExc_StopIteration +#if PY_VERSION_HEX >= 0x02050000 +        || raised_exception == PyExc_GeneratorExit +        || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)  #endif +        || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))      { -        PyErr_Clear();          /* ignore these errors */ +        if (raised_exception) PyErr_Clear();      /* ignore these errors */          Py_INCREF(Py_None);          return Py_None;      }      return NULL;  } -static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) -{ -    __pyx_GeneratorObject *generator = (__pyx_GeneratorObject *) self; +static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) { +    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;      PyObject *typ;      PyObject *tb = NULL;      PyObject *val = NULL; +    PyObject *yf = gen->yieldfrom;      if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))          return NULL; +    if (unlikely(__Pyx_Generator_CheckRunning(gen))) +        return NULL; +    if (yf) { +        PyObject *ret; +        Py_INCREF(yf); +#if PY_VERSION_HEX >= 0x02050000 +        if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { +            int err = __Pyx_Generator_CloseIter(gen, yf); +            Py_DECREF(yf); +            __Pyx_Generator_Undelegate(gen); +            if (err < 0) +                return __Pyx_Generator_SendEx(gen, NULL); +            goto throw_here; +        } +#endif +        gen->is_running = 1; +        if (__Pyx_Generator_CheckExact(yf)) { +            ret = __Pyx_Generator_Throw(yf, args); +        } else { +            PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s__throw); +            if (unlikely(!meth)) { +                Py_DECREF(yf); +                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { +                    gen->is_running = 0; +                    return NULL; +                } +                PyErr_Clear(); +                __Pyx_Generator_Undelegate(gen); +                gen->is_running = 0; +                goto throw_here; +            } +            ret = PyObject_CallObject(meth, args); +            Py_DECREF(meth); +        } +        gen->is_running = 0; +        Py_DECREF(yf); +        if (!ret) { +            ret = __Pyx_Generator_FinishDelegation(gen); +        } +        return ret; +    } +throw_here:      __Pyx_Raise(typ, val, tb, NULL); -    return __Pyx_Generator_SendEx(generator, NULL); +    return __Pyx_Generator_SendEx(gen, NULL);  } -static int -__Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) -{ +static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) {      __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;      Py_VISIT(gen->closure);      Py_VISIT(gen->classobj); +    Py_VISIT(gen->yieldfrom);      Py_VISIT(gen->exc_type);      Py_VISIT(gen->exc_value);      Py_VISIT(gen->exc_traceback);      return 0;  } -static void -__Pyx_Generator_dealloc(PyObject *self) -{ +static int __Pyx_Generator_clear(PyObject *self) { +    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; +    Py_CLEAR(gen->closure); +    Py_CLEAR(gen->classobj); +    Py_CLEAR(gen->yieldfrom); +    Py_CLEAR(gen->exc_type); +    Py_CLEAR(gen->exc_value); +    Py_CLEAR(gen->exc_traceback); +    return 0; +} +static void __Pyx_Generator_dealloc(PyObject *self) {      __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;      PyObject_GC_UnTrack(gen);      if (gen->gi_weakreflist != NULL) @@ -83181,16 +79962,10 @@ __Pyx_Generator_dealloc(PyObject *self)              return;                     /* resurrected.  :( */      }      PyObject_GC_UnTrack(self); -    Py_CLEAR(gen->closure); -    Py_CLEAR(gen->classobj); -    Py_CLEAR(gen->exc_type); -    Py_CLEAR(gen->exc_value); -    Py_CLEAR(gen->exc_traceback); +    __Pyx_Generator_clear(self);      PyObject_GC_Del(gen);  } -static void -__Pyx_Generator_del(PyObject *self) -{ +static void __Pyx_Generator_del(PyObject *self) {      PyObject *res;      PyObject *error_type, *error_value, *error_traceback;      __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self; @@ -83219,11 +79994,13 @@ __Pyx_Generator_del(PyObject *self)          _Py_NewReference(self);          self->ob_refcnt = refcnt;      } +#if CYTHON_COMPILING_IN_CPYTHON      assert(PyType_IS_GC(self->ob_type) &&             _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);      /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so       * we need to undo that. */      _Py_DEC_REFTOTAL; +#endif      /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object       * chain, so no more to do there.       * If COUNT_ALLOCS, the original decref bumped tp_frees, and @@ -83231,13 +80008,17 @@ __Pyx_Generator_del(PyObject *self)       * undone.       */  #ifdef COUNT_ALLOCS -    --self->ob_type->tp_frees; -    --self->ob_type->tp_allocs; +    --Py_TYPE(self)->tp_frees; +    --Py_TYPE(self)->tp_allocs;  #endif  }  static PyMemberDef __pyx_Generator_memberlist[] = {      {(char *) "gi_running", -     T_INT, +#if PY_VERSION_HEX >= 0x02060000 +     T_BOOL, +#else +     T_BYTE, +#endif       offsetof(__pyx_GeneratorObject, is_running),       READONLY,       NULL}, @@ -83249,7 +80030,7 @@ static PyMethodDef __pyx_Generator_methods[] = {      {__Pyx_NAMESTR("close"), (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0},      {0, 0, 0, 0}  }; -static PyTypeObject __pyx_GeneratorType = { +static PyTypeObject __pyx_GeneratorType_type = {      PyVarObject_HEAD_INIT(0, 0)      __Pyx_NAMESTR("generator"),         /*tp_name*/      sizeof(__pyx_GeneratorObject),      /*tp_basicsize*/ @@ -83270,7 +80051,7 @@ static PyTypeObject __pyx_GeneratorType = {      0,                                  /*tp_hash*/      0,                                  /*tp_call*/      0,                                  /*tp_str*/ -    PyObject_GenericGetAttr,            /*tp_getattro*/ +    0,                                  /*tp_getattro*/      0,                                  /*tp_setattro*/      0,                                  /*tp_as_buffer*/      Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ @@ -83279,7 +80060,7 @@ static PyTypeObject __pyx_GeneratorType = {      0,                                  /*tp_clear*/      0,                                  /*tp_richcompare*/      offsetof(__pyx_GeneratorObject, gi_weakreflist), /* tp_weaklistoffse */ -    PyObject_SelfIter,                  /*tp_iter*/ +    0,                                  /*tp_iter*/      (iternextfunc) __Pyx_Generator_Next, /*tp_iternext*/      __pyx_Generator_methods,            /*tp_methods*/      __pyx_Generator_memberlist,         /*tp_members*/ @@ -83304,12 +80085,10 @@ static PyTypeObject __pyx_GeneratorType = {      0,                                  /*tp_version_tag*/  #endif  }; -static -__pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, -                                           PyObject *closure) -{ +static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body, +                                                  PyObject *closure) {      __pyx_GeneratorObject *gen = -        PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType); +        PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type);      if (gen == NULL)          return NULL;      gen->body = body; @@ -83318,6 +80097,7 @@ __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,      gen->is_running = 0;      gen->resume_label = 0;      gen->classobj = NULL; +    gen->yieldfrom = NULL;      gen->exc_type = NULL;      gen->exc_value = NULL;      gen->exc_traceback = NULL; @@ -83325,9 +80105,14 @@ __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,      PyObject_GC_Track(gen);      return gen;  } -static int __pyx_Generator_init(void) -{ -    return PyType_Ready(&__pyx_GeneratorType); +static int __pyx_Generator_init(void) { +    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; +    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; +    if (PyType_Ready(&__pyx_GeneratorType_type)) { +        return -1; +    } +    __pyx_GeneratorType = &__pyx_GeneratorType_type; +    return 0;  }  static int __Pyx_check_binary_version(void) { @@ -83385,23 +80170,6 @@ bad:      return -1;  } -static int __Pyx_SetVtable(PyObject *dict, void *vtable) { -#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0) -    PyObject *ob = PyCapsule_New(vtable, 0, 0); -#else -    PyObject *ob = PyCObject_FromVoidPtr(vtable, 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; -} -  static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {      int start = 0, mid = 0, end = count - 1;      if (end >= 0 && code_line > entries[end].code_line) { @@ -83594,27 +80362,82 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {      return 0;  } - -/* Type Conversion Functions */ - +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { +    return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { +    Py_ssize_t ignore; +    return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +    if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +            __Pyx_sys_getdefaultencoding_not_ascii && +#endif +            PyUnicode_Check(o)) { +#if PY_VERSION_HEX < 0x03030000 +        char* defenc_c; +        PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); +        if (!defenc) return NULL; +        defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +        { +            char* end = defenc_c + PyBytes_GET_SIZE(defenc); +            char* c; +            for (c = defenc_c; c < end; c++) { +                if ((unsigned char) (*c) >= 128) { +                    PyUnicode_AsASCIIString(o); +                    return NULL; +                } +            } +        } +#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ +        *length = PyBytes_GET_SIZE(defenc); +        return defenc_c; +#else /* PY_VERSION_HEX < 0x03030000 */ +        if (PyUnicode_READY(o) == -1) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +        if (PyUnicode_IS_ASCII(o)) { +            *length = PyUnicode_GET_DATA_SIZE(o); +            return PyUnicode_AsUTF8(o); +        } else { +            PyUnicode_AsASCIIString(o); +            return NULL; +        } +#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +        return PyUnicode_AsUTF8AndSize(o, length); +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +#endif /* PY_VERSION_HEX < 0x03030000 */ +    } else +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII  || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ +    { +        char* result; +        int r = PyBytes_AsStringAndSize(o, &result, length); +        if (r < 0) { +            return NULL; +        } else { +            return result; +        } +    } +}  static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {     int is_true = x == Py_True;     if (is_true | (x == Py_False) | (x == Py_None)) return is_true;     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 PY_MAJOR_VERSION < 3    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 PY_MAJOR_VERSION < 3    if (m && m->nb_int) {      name = "int";      res = PyNumber_Int(x); @@ -83630,7 +80453,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {    }  #endif    if (res) { -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3      if (!PyInt_Check(res) && !PyLong_Check(res)) {  #else      if (!PyLong_Check(res)) { @@ -83648,7 +80471,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {    }    return res;  } -  static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {    Py_ssize_t ival;    PyObject* x = PyNumber_Index(b); @@ -83657,7 +80479,6 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {    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) @@ -83671,14 +80492,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {     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"); +   if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { +       if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) +           PyErr_SetString(PyExc_OverflowError, +                           "value too large to convert to size_t");         return (size_t)-1;     }     return (size_t)val; diff --git a/python/src/sa/alignment.pxi b/python/src/sa/alignment.pxi index 842899ad..f66f0fbf 100644 --- a/python/src/sa/alignment.pxi +++ b/python/src/sa/alignment.pxi @@ -5,21 +5,23 @@ from libc.stdlib cimport malloc, realloc, free  # We have the space for our corpus, so this is not a problem;  # May need to revisit if things get really tight, though. +cdef int ALIGNMENT_CODE = 1 << 16 +  cdef class Alignment:      cdef IntList links      cdef IntList sent_index      cdef int link(self, int i, int j):          """Integerizes an alignment link pair""" -        return i*65536 + j +        return i * ALIGNMENT_CODE + j      def unlink(self, link):          """De-integerizes an alignment link pair""" -        return (link/65536, link%65536) +        return (link / ALIGNMENT_CODE, link % ALIGNMENT_CODE)      cdef _unlink(self, int link, int* f, int* e): -        f[0] = link/65536 -        e[0] = link%65536 +        f[0] = link / ALIGNMENT_CODE +        e[0] = link % ALIGNMENT_CODE      def get_sent_links(self, int sent_id):          cdef IntList sent_links diff --git a/python/src/sa/int_list.pxi b/python/src/sa/int_list.pxi index 79d67ad9..46d434e7 100644 --- a/python/src/sa/int_list.pxi +++ b/python/src/sa/int_list.pxi @@ -29,12 +29,12 @@ cdef class IntList:          ret += str(self.len)          return ret -    def index(self, val): +    def index(self, int val):          cdef unsigned i          for i in range(self.len):              if self.arr[i] == val:                  return i -        return IndexError +        raise ValueError('%s not in IntList' % val)      def partition(self,start,end):          pivot = self.arr[end] diff --git a/python/src/sa/rule.pxi b/python/src/sa/rule.pxi index 98fbac76..4f0ea74f 100644 --- a/python/src/sa/rule.pxi +++ b/python/src/sa/rule.pxi @@ -189,4 +189,4 @@ cdef class Rule:      def alignments(self):          for point in self.word_alignments: -            yield point/65536, point%65536 +            yield point / ALIGNMENT_CODE, point % ALIGNMENT_CODE diff --git a/python/src/sa/rulefactory.pxi b/python/src/sa/rulefactory.pxi index 559e8396..10bb9737 100644 --- a/python/src/sa/rulefactory.pxi +++ b/python/src/sa/rulefactory.pxi @@ -879,15 +879,15 @@ cdef class HieroCachingRuleFactory:      def advance(self, frontier, res, fwords):          cdef unsigned na          nf = [] -        for (toskip, (i, alt, pathlen)) in frontier: +        for toskip, (i, alt, pathlen) in frontier:              spanlen = fwords[i][alt][2] -            if (toskip == 0): +            if toskip == 0:                  res.append((i, alt, pathlen))              ni = i + spanlen -            if (ni < len(fwords) and (pathlen + 1) < self.max_initial_size): +            if ni < len(fwords) and pathlen + 1 < self.max_initial_size:                  for na in range(len(fwords[ni])):                      nf.append((toskip - 1, (ni, na, pathlen + 1))) -        if (len(nf) > 0): +        if len(nf) > 0:              return self.advance(nf, res, fwords)          else:              return res @@ -895,11 +895,11 @@ cdef class HieroCachingRuleFactory:      def get_all_nodes_isteps_away(self, skip, i, spanlen, pathlen, fwords, next_states, reachable_buffer):          cdef unsigned alt_it          frontier = [] -        if (i+spanlen+skip >= len(next_states)): +        if i+spanlen+skip >= len(next_states):              return frontier          key = tuple([i,spanlen])          reachable = [] -        if (key in reachable_buffer): +        if key in reachable_buffer:              reachable = reachable_buffer[key]          else:              reachable = self.reachable(fwords, i, spanlen) @@ -911,7 +911,7 @@ cdef class HieroCachingRuleFactory:                      continue                  if pathlen+jump <= self.max_initial_size:                      for alt_id in range(len(fwords[next_id])): -                        if (fwords[next_id][alt_id][0] != EPSILON): +                        if fwords[next_id][alt_id][0] != EPSILON:                              newel = (next_id,alt_id,pathlen+jump)                              if newel not in frontier:                                  frontier.append((next_id,alt_id,pathlen+jump)) @@ -919,18 +919,18 @@ cdef class HieroCachingRuleFactory:      def reachable(self, fwords, ifrom, dist):          ret = [] -        if (ifrom >= len(fwords)): +        if ifrom >= len(fwords):              return ret          for alt_id in range(len(fwords[ifrom])): -            if (fwords[ifrom][alt_id][0] == EPSILON): +            if fwords[ifrom][alt_id][0] == EPSILON:                  ret.extend(self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist))              else: -                if (dist==0): -                    if (ifrom not in ret): +                if dist == 0: +                    if ifrom not in ret:                          ret.append(ifrom)                  else:                      for ifromchild in self.reachable(fwords,ifrom+fwords[ifrom][alt_id][2],dist-1): -                        if (ifromchild not in ret): +                        if ifromchild not in ret:                              ret.append(ifromchild)          return ret @@ -938,15 +938,15 @@ cdef class HieroCachingRuleFactory:      def shortest(self, fwords, ifrom, ito):          cdef unsigned alt_id          min = 1000 -        if (ifrom > ito): +        if ifrom > ito:              return min -        if (ifrom == ito): +        if ifrom == ito:              return 0          for alt_id in range(len(fwords[ifrom])):              currmin = self.shortest(fwords,ifrom+fwords[ifrom][alt_id][2],ito) -            if (fwords[ifrom][alt_id][0] != EPSILON): +            if fwords[ifrom][alt_id][0] != EPSILON:                  currmin += 1 -            if (currmin<min): +            if currmin < min:                  min = currmin          return min @@ -964,7 +964,7 @@ cdef class HieroCachingRuleFactory:              for alt in curr_col:                  next_id = curr[0]+alt[2]                  jump = 1 -                if (alt[0] == EPSILON): +                if alt[0] == EPSILON:                      jump = 0                  if next_id not in result and min_dist <= curr[1]+jump <= self.max_initial_size+1:                      candidate.append([next_id,curr[1]+jump]) @@ -1172,20 +1172,20 @@ cdef class HieroCachingRuleFactory:                          # I put spanlen=1 below                          key = tuple([self.min_gap_size, i, 1, pathlen])                          frontier_nodes = [] -                        if (key in nodes_isteps_away_buffer): +                        if key in nodes_isteps_away_buffer:                              frontier_nodes = nodes_isteps_away_buffer[key]                          else:                              frontier_nodes = self.get_all_nodes_isteps_away(self.min_gap_size, i, 1, pathlen, fwords, next_states, reachable_buffer)                              nodes_isteps_away_buffer[key] = frontier_nodes -                        for (i, alt, pathlen) in frontier_nodes: +                        for i, alt, pathlen in frontier_nodes:                              new_frontier.append((k, i, input_match + (i,), alt, pathlen, xnode, phrase +(xcat,), is_shadow_path))              frontier = new_frontier          # Online rule extraction and scoring          if self.online:              f_syms = tuple(word[0][0] for word in fwords) -            for (f, lex_i, lex_j) in self.get_f_phrases(f_syms): +            for f, lex_i, lex_j in self.get_f_phrases(f_syms):                  spanlen = (lex_j - lex_i) + 1                  if not sym_isvar(f[0]):                      spanlen += 1 @@ -1440,10 +1440,11 @@ cdef class HieroCachingRuleFactory:          step = (num_gaps+1)*2          i = 0 +        cdef IntList indexes          while i < len1:              ephr_arr._clear()              num_chunks = 0 -            indexes = [] +            indexes = IntList()              for j from 0 <= j < num_gaps+1:                  if e_gaps1[i+2*j] < e_gaps1[i+(2*j)+1]:                      num_chunks = num_chunks + 1 @@ -1461,18 +1462,18 @@ cdef class HieroCachingRuleFactory:          free(e_gap_order)          return result -    cdef IntList create_alignments(self, int* sent_links, int num_links, findexes, eindexes): +    cdef IntList create_alignments(self, int* sent_links, int num_links, +            IntList findexes, IntList eindexes):          cdef unsigned i          cdef IntList ret = IntList() -        for i in range(len(findexes)): -            s = findexes[i] -            if (s<0): -                continue +        for i in range(findexes.len): +            s = findexes.arr[i] +            if s < 0: continue              idx = 0 -            while (idx < num_links*2): -                if (sent_links[idx] == s): +            while idx < num_links * 2: +                if sent_links[idx] == s:                      j = eindexes.index(sent_links[idx+1]) -                    ret.append(i*65536+j) +                    ret.append(i * ALIGNMENT_CODE + j)                  idx += 2          return ret @@ -1507,7 +1508,7 @@ cdef class HieroCachingRuleFactory:              for j in range(chunklen[i]):                  self.findexes1.append(matching.arr[matching.start+i]+j-f_sent_start);                  sofar += 1 -            if (i+1<num_chunks): +            if i+1 < num_chunks:                  self.findexes1.append(phrase[sofar])                  sofar += 1 @@ -1677,7 +1678,7 @@ cdef class HieroCachingRuleFactory:                          else:                              pair_count = 0                              reason_for_failure = "Didn't extract anything from [%d, %d] -> [%d, %d]" % (f_back_low, f_back_high, e_low, e_high) -                        for (phrase2,eindexes) in phrase_list: +                        for phrase2, eindexes in phrase_list:                              als1 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)                                      extracts.append((fphr, phrase2, pair_count, tuple(als1)))                      if (num_gaps < self.max_nonterminals and @@ -1732,7 +1733,7 @@ cdef class HieroCachingRuleFactory:                                      pair_count = 1.0 / len(phrase_list)                                  else:                                      pair_count = 0 -                                for phrase2,eindexes in phrase_list: +                                for phrase2, eindexes in phrase_list:                                      als2 = self.create_alignments(sent_links,num_links,self.findexes,eindexes)                                              extracts.append((fphr, phrase2, pair_count, tuple(als2))) @@ -1899,7 +1900,7 @@ cdef class HieroCachingRuleFactory:          al = [[] for i in range(f_len)]          fe_span = [[e_len + 1, -1] for i in range(f_len)]          ef_span = [[f_len + 1, -1] for i in range(e_len)] -        for (f, e) in alignment: +        for f, e in alignment:              al[f].append(e)              fe_span[f][0] = min(fe_span[f][0], e)              fe_span[f][1] = max(fe_span[f][1], e) @@ -2030,7 +2031,7 @@ cdef class HieroCachingRuleFactory:          # Update possible phrases (samples)          # This could be more efficiently integrated with extraction          # at the cost of readability -        for (f, lex_i, lex_j) in self.get_f_phrases(f_words): +        for f, lex_i, lex_j in self.get_f_phrases(f_words):              self.samples_f[f] += 1          # Update phrase counts @@ -2112,7 +2113,7 @@ cdef class HieroCachingRuleFactory:          # Create rule (f_phrase, e_phrase, links, f_link_min, f_link_max)          f = Phrase(f_sym)          e = Phrase(e_sym) -        a = tuple(self.alignment.link(i, j) for (i, j) in links) +        a = tuple(self.alignment.link(i, j) for i, j in links)          return (f, e, a, lex_f_i, lex_f_j)      # Rule string from rule  | 
