    /*
     * call-seq:
     *  native_write(chunk, last_chunk)
     *
     * Write +chunk+ to PushParser. +last_chunk+ triggers the end_document handle
     */
    static VALUE native_write(VALUE self, VALUE _chunk, VALUE _last_chunk)
    {
      xmlParserCtxtPtr ctx;
      Data_Get_Struct(self, xmlParserCtxt, ctx);

      const char * chunk  = NULL;
      int last_chunk      = 0;
      int size            = 0;

      if(Qnil != _chunk) {
        chunk = StringValuePtr(_chunk);
        size = RSTRING_LEN(_chunk);
      }
      if(Qtrue == _last_chunk) last_chunk = 1;

      if(xmlParseChunk(ctx, chunk, size, last_chunk))
        rb_raise(rb_eRuntimeError, "Couldn't parse chunk");

      return self;
    }