← Back to team overview

zorba-coders team mailing list archive

[Merge] lp:~zorba-coders/zorba/feature-profile into lp:zorba

 

Paul J. Lucas has proposed merging lp:~zorba-coders/zorba/feature-profile into lp:zorba.

Commit message:
Added a profiling feature.

Requested reviews:
  Paul J. Lucas (paul-lucas)

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/feature-profile/+merge/208042

Added a profiling feature.
-- 
https://code.launchpad.net/~zorba-coders/zorba/feature-profile/+merge/208042
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'bin/zorbacmd_args.cpp'
--- bin/zorbacmd_args.cpp	2014-02-21 14:58:32 +0000
+++ bin/zorbacmd_args.cpp	2014-02-24 23:33:07 +0000
@@ -261,6 +261,9 @@
     HELP_OPT( "--print-translated" )
       "Print the normalized expression tree.\n\n"
 
+    HELP_OPT( "--profile" )
+      "Enable profiling.\n\n"
+
     ////////// q //////////////////////////////////////////////////////////////
 
     HELP_OPT( "--query, -q" )
@@ -685,6 +688,8 @@
       z_props.setPrintStaticTypes( true );
     else if ( IS_LONG_OPT( "--print-translated" ) )
       z_props.setPrintTranslated( true );
+    else if ( IS_LONG_OPT( "--profile" ) )
+      z_props.setProfile( true );
 
     ////////// q //////////////////////////////////////////////////////////////
 

=== modified file 'include/zorba/properties.h'
--- include/zorba/properties.h	2014-02-19 00:43:31 +0000
+++ include/zorba/properties.h	2014-02-24 23:33:07 +0000
@@ -288,6 +288,24 @@
     print_translated_ = b;
   }
 
+  /**
+   * Gets whether profiling has been enabled.
+   *
+   * @return Returns whether profiling has been enabled.
+   */
+  bool getProfile() const {
+    return profile_;
+  }
+
+  /**
+   * Enables or disables profiling.
+   *
+   * @param profile If \c true, profiling is enabled.
+   */
+  void setProfile( bool profile ) {
+    profile_ = profile;
+  }
+
   bool getStableIteratorIDs() const {
     return stable_iterator_ids_;
   }
@@ -375,6 +393,7 @@
   bool                print_optimized_;
   bool                print_static_types_;
   bool                print_translated_;
+  bool                profile_;
   bool                stable_iterator_ids_;
   bool                trace_codegen_;
 #ifndef ZORBA_NO_FULL_TEXT

=== modified file 'include/zorba/xquery.h'
--- include/zorba/xquery.h	2014-02-18 19:52:39 +0000
+++ include/zorba/xquery.h	2014-02-24 23:33:07 +0000
@@ -527,6 +527,22 @@
   parse(std::istream& aQuery, ModuleInfo_t& aResult) = 0;
 
   /**
+   * Sets whether profile is enabled.
+   *
+   * @param profiling If \c true, enables profiling.
+   */
+  virtual void
+  setProfiling( bool profiling ) = 0;
+
+  /**
+   * Gets whether profiling has been enabled.
+   *
+   * @return true only if profiling has been enabled.
+   */
+  virtual bool
+  isProfiling() const = 0;
+
+  /**
    * \brief Print the execution plan of this query to the given output stream.
    *
    * @param aStream the output stream to which the execution plan is printed

=== modified file 'src/api/properties.cpp'
--- src/api/properties.cpp	2014-02-19 00:43:31 +0000
+++ src/api/properties.cpp	2014-02-24 23:33:07 +0000
@@ -55,6 +55,7 @@
   print_optimized_ = false;
   print_static_types_ = true;
   print_translated_ = false;
+  profile_ = false;
   stable_iterator_ids_ = false;
   trace_codegen_ = false;
 #ifndef ZORBA_NO_FULL_TEXT

=== modified file 'src/api/xqueryimpl.cpp'
--- src/api/xqueryimpl.cpp	2014-02-19 00:43:31 +0000
+++ src/api/xqueryimpl.cpp	2014-02-24 23:33:07 +0000
@@ -22,17 +22,18 @@
 #include <algorithm>
 #include "zorbatypes/schema_types.h"
 
+#include <zorba/audit_scoped.h>
 #include <zorba/diagnostic_handler.h>
+#include <zorba/diagnostic_list.h>
 #include <zorba/error.h>
-#include <zorba/diagnostic_list.h>
+#include <zorba/internal/unique_ptr.h>
+#include <zorba/module_info.h>
+#include <zorba/properties.h>
 #include <zorba/sax2.h>
-#include <zorba/audit_scoped.h>
-#include <zorba/module_info.h>
-#include <zorba/internal/unique_ptr.h>
 
-#include <zorbatypes/URI.h>
 
 #include "diagnostics/xquery_diagnostics.h"
+#include "zorbatypes/URI.h"
 #include "zorbatypes/zstring.h"
 #include "zorbautils/lock.h"
 
@@ -62,6 +63,7 @@
 #include "runtime/api/plan_wrapper.h"
 #include "runtime/visitors/iterprinter.h"
 #include "runtime/visitors/printer_visitor_api.h"
+#include "runtime/visitors/profile_visitor.h"
 #include "runtime/util/flowctl_exception.h"
 
 #include "store/api/temp_seq.h"
@@ -178,6 +180,12 @@
   close();
 }
 
+void XQueryImpl::profile() const {
+  if ( !thePlanProxy )
+    throw ZORBA_EXCEPTION( zerr::ZAPI0003_XQUERY_NOT_COMPILED );
+  PlanIterator const *const root_iter =
+    static_cast<PlanIterator*>( thePlanProxy->theRootIter.getp() );
+}
 
 /*******************************************************************************
   Always called while holding theMutex
@@ -716,6 +724,17 @@
 
 /*******************************************************************************
 
+ ******************************************************************************/
+
+void XQueryImpl::dispose( PlanWrapper_t const &plan ) {
+  theExecuting = false;
+  if ( Properties::instance().getProfile() )
+    plan->profile();
+  plan->close();
+}
+
+/*******************************************************************************
+
 ********************************************************************************/
 StaticCollectionManager*
 XQueryImpl::getStaticCollectionManager() const
@@ -1084,13 +1103,11 @@
     }
     catch (...)
     {
-      lPlan->close();
-      theExecuting = false;
+      dispose( lPlan );
       throw;
     }
 
-    lPlan->close();
-    theExecuting = false;
+    dispose( lPlan );
 
     theDocLoadingUserTime = theDynamicContext->theDocLoadingUserTime;
     theDocLoadingTime = theDynamicContext->theDocLoadingTime;
@@ -1128,13 +1145,11 @@
     }
     catch (...)
     {
-      lPlan->close();
-      theExecuting = false;
+      dispose( lPlan );
       throw;
     }
 
-    lPlan->close();
-    theExecuting = false;
+    dispose( lPlan );
 
     theDocLoadingUserTime = theDynamicContext->theDocLoadingUserTime;
     theDocLoadingTime = theDynamicContext->theDocLoadingTime;
@@ -1174,13 +1189,11 @@
     }
     catch (...)
     {
-      lPlan->close();
-      theExecuting = false;
+      dispose( lPlan );
       throw;
     }
 
-    lPlan->close();
-    theExecuting = false;
+    dispose( lPlan );
 
     theDocLoadingUserTime = theDynamicContext->theDocLoadingUserTime;
     theDocLoadingTime = theDynamicContext->theDocLoadingTime;
@@ -1223,13 +1236,11 @@
     }
     catch (...)
     {
-      lPlan->close();
-      theExecuting = false;
+      dispose( lPlan );
       throw;
     }
 
-    lPlan->close();
-    theExecuting = false;
+    dispose( lPlan );
 
     theDocLoadingUserTime = theDynamicContext->theDocLoadingUserTime;
     theDocLoadingTime = theDynamicContext->theDocLoadingTime;
@@ -1659,6 +1670,18 @@
 
 /*******************************************************************************
 
+ ******************************************************************************/
+
+void XQueryImpl::setProfiling( bool profiling ) {
+  // TODO
+}
+
+bool XQueryImpl::isProfiling() const {
+  return false; // TODO
+}
+
+/*******************************************************************************
+
 ********************************************************************************/
 std::ostream& operator<<(std::ostream& os, const XQuery_t& aQuery)
 {

=== modified file 'src/api/xqueryimpl.h'
--- src/api/xqueryimpl.h	2014-02-18 19:52:39 +0000
+++ src/api/xqueryimpl.h	2014-02-24 23:33:07 +0000
@@ -338,6 +338,9 @@
   StaticCollectionManager*
   getStaticCollectionManager() const;
 
+  void setProfiling( bool );
+  bool isProfiling() const;
+
 protected:
 
   void doCompile(
@@ -370,6 +373,8 @@
         void* aHandlerData,
         const Zorba_SerializerOptions_t* = NULL);
 
+  void dispose( PlanWrapper_t const& );
+
   void removeResultIterator(const ResultIteratorImpl* iter);
 
   void checkNotClosed() const;
@@ -389,6 +394,8 @@
   bool isBoundVariable(const String& aNamespace, const String& aLocalname) const;
 
   void parse(std::istream& aQuery, ModuleInfo_t& aResult);
+
+  void profile() const;
 };
 
 

=== modified file 'src/functions/udf.h'
--- src/functions/udf.h	2013-04-24 01:35:58 +0000
+++ src/functions/udf.h	2014-02-24 23:33:07 +0000
@@ -202,6 +202,7 @@
   void optimize();
 
   PlanIter_t getPlan(uint32_t& planStateSize, ulong nextVarId);
+  PlanIter_t const& getPlan() const { return thePlan; }
 
   void invalidatePlan();
 

=== modified file 'src/runtime/CMakeLists.txt'
--- src/runtime/CMakeLists.txt	2013-12-14 00:07:19 +0000
+++ src/runtime/CMakeLists.txt	2014-02-24 23:33:07 +0000
@@ -20,6 +20,8 @@
 
 SET(PRINTER_VISITOR_HEADER_GENERATOR  "${SPEC_DIR}/printer_visitor_h.xq")
 SET(PRINTER_VISITOR_CPP_GENERATOR     "${SPEC_DIR}/printer_visitor_cpp.xq")
+SET(PROFILE_VISITOR_HEADER_GENERATOR  "${SPEC_DIR}/profile_visitor_h.xq")
+SET(PROFILE_VISITOR_CPP_GENERATOR     "${SPEC_DIR}/profile_visitor_cpp.xq")
 SET(PLANITER_VISITOR_HEADER_GENERATOR "${SPEC_DIR}/plan_iter_visitor_h.xq")
 SET(CODEGEN_UTILS_FILE                "${SPEC_DIR}/utils.xq")
 
@@ -29,6 +31,10 @@
   "${SPEC_BINARY_DIR}/visitors/printer_visitor.cpp")
 SET(PLANITER_VISITOR_HEADER_FILE
   "${SPEC_BINARY_DIR}/visitors/planiter_visitor.h")
+SET(PROFILE_VISITOR_HEADER_FILE
+  "${SPEC_BINARY_DIR}/visitors/profile_visitor.h")
+SET(PROFILE_VISITOR_CPP_FILE
+  "${SPEC_BINARY_DIR}/visitors/profile_visitor.cpp")
 
 # Generate iterator_enum.h, and mark plan_iterator.h as depending on the
 # generated file so it will be built at appropriate times
@@ -83,6 +89,20 @@
   "${PRINTER_VISITOR_HEADER_FILE};${PLANITER_VISITOR_HEADER_FILE};${CODEGEN_UTILS_FILE}"
   "${PRINTER_VISITOR_CPP_FILE}")
 
+ZORBA_RUNTIME_GENERATOR(
+  "${PROFILE_VISITOR_HEADER_GENERATOR}"
+  "" # No external variables for query
+  "${SPEC_FILES}"
+  "${CODEGEN_UTILS_FILE}"
+  "${PROFILE_VISITOR_HEADER_FILE}")
+
+ZORBA_RUNTIME_GENERATOR(
+  "${PROFILE_VISITOR_CPP_GENERATOR}"
+  "" # No external variables for query
+  "${SPEC_FILES}"
+  "${PROFILE_VISITOR_HEADER_FILE};${PLANITER_VISITOR_HEADER_FILE};${CODEGEN_UTILS_FILE}"
+  "${PROFILE_VISITOR_CPP_FILE}")
+
 
 ZORBA_RUNTIME_GENERATOR(
   "${PLANITER_VISITOR_HEADER_GENERATOR}"
@@ -96,6 +116,8 @@
   visitors/printer_visitor.cpp
   visitors/printer_visitor_impl.cpp
   visitors/printer_visitor_api.cpp
+  visitors/profile_visitor.cpp
+  visitors/profile_visitor_impl.cpp
   api/plan_iterator_wrapper.cpp
   api/plan_wrapper.cpp
   base/plan_iterator.cpp

=== modified file 'src/runtime/accessors/pregenerated/accessors.cpp'
--- src/runtime/accessors/pregenerated/accessors.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/accessors/pregenerated/accessors.cpp	2014-02-24 23:33:07 +0000
@@ -59,6 +59,10 @@
 
 NodeNameIterator::~NodeNameIterator() {}
 
+
+zstring NodeNameIterator::getNameAsString() const {
+  return "fn:node-name";
+}
 // </NodeNameIterator>
 
 
@@ -87,6 +91,10 @@
 
 NilledIterator::~NilledIterator() {}
 
+
+zstring NilledIterator::getNameAsString() const {
+  return "fn:nilled";
+}
 // </NilledIterator>
 
 
@@ -131,6 +139,10 @@
   PlanIteratorState::reset(planState);
   hasOutput = false;
 }
+
+zstring FnStringIterator::getNameAsString() const {
+  return "fn:string";
+}
 // </FnStringIterator>
 
 
@@ -173,6 +185,10 @@
   PlanIteratorState::reset(planState);
   theTypedValueIter = NULL;
 }
+
+zstring FnDataIterator::getNameAsString() const {
+  return "fn:data";
+}
 // </FnDataIterator>
 
 
@@ -201,6 +217,10 @@
 
 BaseUriIterator::~BaseUriIterator() {}
 
+
+zstring BaseUriIterator::getNameAsString() const {
+  return "fn:base-uri";
+}
 // </BaseUriIterator>
 
 
@@ -229,6 +249,10 @@
 
 DocumentUriIterator::~DocumentUriIterator() {}
 
+
+zstring DocumentUriIterator::getNameAsString() const {
+  return "fn:document-uri";
+}
 // </DocumentUriIterator>
 
 
@@ -257,6 +281,10 @@
 
 RootIterator::~RootIterator() {}
 
+
+zstring RootIterator::getNameAsString() const {
+  return "fn:root";
+}
 // </RootIterator>
 
 

=== modified file 'src/runtime/accessors/pregenerated/accessors.h'
--- src/runtime/accessors/pregenerated/accessors.h	2014-01-31 01:39:38 +0000
+++ src/runtime/accessors/pregenerated/accessors.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~NodeNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~NilledIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -137,6 +141,8 @@
 
   bool isUpdating() const { return theEmptyStringOnNULL; }
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -180,6 +186,8 @@
 
   virtual ~FnDataIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -210,6 +218,8 @@
 
   virtual ~BaseUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -240,6 +250,8 @@
 
   virtual ~DocumentUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -270,6 +282,8 @@
 
   virtual ~RootIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/any_uri/pregenerated/any_uri.cpp'
--- src/runtime/any_uri/pregenerated/any_uri.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/any_uri/pregenerated/any_uri.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 ResolveUriIterator::~ResolveUriIterator() {}
 
+
+zstring ResolveUriIterator::getNameAsString() const {
+  return "fn:resolve-uri";
+}
 // </ResolveUriIterator>
 
 

=== modified file 'src/runtime/any_uri/pregenerated/any_uri.h'
--- src/runtime/any_uri/pregenerated/any_uri.h	2014-01-31 01:39:38 +0000
+++ src/runtime/any_uri/pregenerated/any_uri.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~ResolveUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/api/plan_wrapper.cpp'
--- src/runtime/api/plan_wrapper.cpp	2014-02-10 00:44:55 +0000
+++ src/runtime/api/plan_wrapper.cpp	2014-02-24 23:33:07 +0000
@@ -15,6 +15,8 @@
  */
 #include "stdafx.h"
 
+#include <zorba/properties.h>
+
 #include "context/static_context.h"
 #include "context/dynamic_context.h"
 
@@ -23,8 +25,10 @@
 #include "runtime/api/plan_wrapper.h"
 #include "runtime/base/plan_iterator.h"
 #include "runtime/util/timeout.h"
-#include <zorba/properties.h>
+#include "runtime/visitors/iterprinter.h"
+#include "runtime/visitors/printer_visitor_api.h"
 
+using namespace std;
 
 namespace zorba {
 
@@ -205,6 +209,15 @@
 }
 
 
+/******************************************************************************
+
+ ******************************************************************************/
+
+void PlanWrapper::profile() const {
+  XMLIterPrinter p( cout );
+  print_iter_plan( p, theIterator, thePlanState );
+}
+
 /*******************************************************************************
 
 ********************************************************************************/

=== modified file 'src/runtime/api/plan_wrapper.h'
--- src/runtime/api/plan_wrapper.h	2013-07-25 14:09:47 +0000
+++ src/runtime/api/plan_wrapper.h	2014-02-24 23:33:07 +0000
@@ -107,6 +107,8 @@
 
   dynamic_context* dctx() { return theDynamicContext; }
 
+  void profile() const;
+
 #ifndef NDEBUG
   virtual std::string toString() const;
 #endif    

=== modified file 'src/runtime/base/binarybase.h'
--- src/runtime/base/binarybase.h	2013-05-28 18:20:54 +0000
+++ src/runtime/base/binarybase.h	2014-02-24 23:33:07 +0000
@@ -189,7 +189,7 @@
   { }                                                                   \
                                                                         \
   void accept(PlanIterVisitor& v) const;                                \
-                                                                        \
+  zstring getNameAsString() const;                                      \
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;    \
 };
 

=== modified file 'src/runtime/base/narybase.h'
--- src/runtime/base/narybase.h	2013-05-28 18:20:54 +0000
+++ src/runtime/base/narybase.h	2014-02-24 23:33:07 +0000
@@ -213,7 +213,7 @@
   { }                                                                   \
                                                                         \
   void accept(PlanIterVisitor& v) const;                                \
-                                                                        \
+  zstring getNameAsString() const;                                      \
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;    \
 };
 

=== modified file 'src/runtime/base/noarybase.h'
--- src/runtime/base/noarybase.h	2013-05-28 18:20:54 +0000
+++ src/runtime/base/noarybase.h	2014-02-24 23:33:07 +0000
@@ -142,7 +142,7 @@
   { }                                                                   \
                                                                         \
   void accept(PlanIterVisitor& v) const;                                \
-                                                                        \
+  zstring getNameAsString() const;                                      \
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;    \
 };
 

=== modified file 'src/runtime/base/plan_iterator.cpp'
--- src/runtime/base/plan_iterator.cpp	2014-02-10 00:44:55 +0000
+++ src/runtime/base/plan_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -15,6 +15,10 @@
  */
 #include "stdafx.h"
 
+#include <typeinfo>
+
+#include <zorba/properties.h>
+
 #include "compiler/api/compilercb.h"
 
 #include "context/static_context.h"
@@ -31,9 +35,6 @@
 
 #include "diagnostics/util_macros.h"
 
-#ifndef NDEBUG
-#include <zorba/properties.h>
-#endif
 
 namespace zorba
 {
@@ -70,7 +71,8 @@
   theQuery(0),
   theGlobalDynCtx(globalDctx),
   theLocalDynCtx(localDctx),
-  theHasToQuit(false)
+  theHasToQuit(false),
+  profile_( Properties::instance().getProfile() )
 {
   assert(globalDctx != NULL && localDctx != NULL);
   theBlock = new int8_t[theBlockSize];
@@ -132,9 +134,15 @@
 {
 }
 
+PlanIterator::~PlanIterator() {
+  // out-of-line since it's virtual
+}
 
 SERIALIZE_INTERNAL_METHOD(PlanIterator)
 
+zstring PlanIterator::getNameAsString() const {
+  return typeid( *this ).name();
+}
 
 void PlanIterator::serialize(::zorba::serialization::Archiver& ar)
 {

=== modified file 'src/runtime/base/plan_iterator.h'
--- src/runtime/base/plan_iterator.h	2014-01-31 01:39:38 +0000
+++ src/runtime/base/plan_iterator.h	2014-02-24 23:33:07 +0000
@@ -27,6 +27,7 @@
 
 #include "compiler/parser/query_loc.h"
 
+#include "util/time_util.h"
 #include "zorbaserialization/class_serializer.h"
 #include "zorbaserialization/serialize_template_types.h"
 #include "zorbaserialization/serialize_zorba_types.h"
@@ -138,6 +139,8 @@
 
   bool                      theHasToQuit;
 
+  bool const                profile_;
+
 public:
   PlanState(
       dynamic_context* globalDctx,
@@ -153,6 +156,39 @@
 
 
 /*******************************************************************************
+
+ ******************************************************************************/
+
+/**
+ * Contains all profiling data for an iterator.
+ */
+struct profile_data {
+  /**
+   * Contains per-member-function profiling data.
+   */
+  struct mbr_fn {
+    unsigned call_count_;
+    time::msec_type cpu_time_;
+
+    void init() {
+      call_count_ = 0;
+      cpu_time_ = 0;
+    }
+
+    void add( time::msec_type t ) {
+      ++call_count_;
+      cpu_time_ += t;
+    }
+  };
+
+  mbr_fn next_;                         // for nextImpl()
+
+  void init() {
+    next_.init();
+  }
+};
+
+/*******************************************************************************
   Base class for all iterator state objects.
 ********************************************************************************/
 class PlanIteratorState
@@ -163,6 +199,9 @@
 private:
   uint32_t        theDuffsLine;
 
+  profile_data    profile_data_;
+  friend class PlanIterator;
+
 #ifndef NDEBUG
 public:
   bool            theIsOpened;
@@ -194,9 +233,11 @@
    * Each subclass implementation of this method must call the init() method of
    * their parent class explicitly in order to guarantee proper initialization.
    */
-  void init(PlanState&)
+  void init(PlanState &planState)
   {
     theDuffsLine = DUFFS_ALLOCATE_RESOURCES;
+    if ( planState.profile_ )
+      profile_data_.init();
   }
 
   /*
@@ -215,6 +256,10 @@
   {
     theDuffsLine = DUFFS_ALLOCATE_RESOURCES;
   }
+
+  profile_data const& get_profile_data() const {
+    return profile_data_;
+  }
 };
 
 
@@ -299,12 +344,14 @@
 
   PlanIterator(const PlanIterator& it);
 
-  virtual ~PlanIterator() {}
+  ~PlanIterator();
 
   void setLocation(const QueryLoc& loc_) { loc = loc_; }
 
   const QueryLoc& getLocation() const { return loc; }
 
+  virtual zstring getNameAsString() const;
+
   uint32_t getStateOffset() const { return theStateOffset; }
 
   static_context* getStaticContext() const { return theSctx; }
@@ -420,12 +467,18 @@
    */
   bool produceNext(store::Item_t& result, PlanState& planState) const
   {
+    PlanIteratorState *const state =
+      StateTraitsImpl<PlanIteratorState>::getState(planState, theStateOffset);
 #ifndef NDEBUG
-    PlanIteratorState* state =
-    StateTraitsImpl<PlanIteratorState>::getState(planState, theStateOffset);
     ZORBA_ASSERT(state->theIsOpened);
 #endif
-    return nextImpl(result, planState);
+    time::cpu::timer t;
+    if ( planState.profile_ )
+      t.start();
+    bool const ret_val = nextImpl(result, planState);
+    if ( planState.profile_ )
+      state->profile_data_.next_.add( t.elapsed() );
+    return ret_val;
   }
 
   virtual bool nextImpl(store::Item_t& result, PlanState& planState) const = 0;
@@ -467,6 +520,9 @@
 
 } /* namespace zorba */
 
+#define DEF_GET_NAME_AS_STRING(...) \
+  zstring __VA_ARGS__::getNameAsString() const { return #__VA_ARGS__; }
+
 #endif  /* ZORBA_ITERATOR_H */
 
 /*

=== modified file 'src/runtime/base/unarybase.h'
--- src/runtime/base/unarybase.h	2013-05-28 18:20:54 +0000
+++ src/runtime/base/unarybase.h	2014-02-24 23:33:07 +0000
@@ -128,12 +128,12 @@
 }
 
 
-#define UNARY_ACCEPT(IterType)                      \
-void IterType::accept(PlanIterVisitor& v) const     \
-{                                                   \
-  v.beginVisit(*this);                              \
-  theChild->accept(v);                              \
-  v.endVisit(*this);                                \
+#define UNARY_ACCEPT(IterType)                  \
+void IterType::accept(PlanIterVisitor& v) const \
+{                                               \
+  v.beginVisit(*this);                          \
+  theChild->accept(v);                          \
+  v.endVisit(*this);                            \
 }
 
 
@@ -162,7 +162,7 @@
   { }                                                                   \
                                                                         \
   void accept(PlanIterVisitor& v) const;                                \
-                                                                        \
+  zstring getNameAsString() const;                                      \
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;    \
 };
 

=== modified file 'src/runtime/base64/pregenerated/base64.cpp'
--- src/runtime/base64/pregenerated/base64.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/base64/pregenerated/base64.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 Base64DecodeIterator::~Base64DecodeIterator() {}
 
+
+zstring Base64DecodeIterator::getNameAsString() const {
+  return "fn-zorba-base64:decode";
+}
 // </Base64DecodeIterator>
 
 
@@ -86,6 +90,10 @@
 
 Base64EncodeIterator::~Base64EncodeIterator() {}
 
+
+zstring Base64EncodeIterator::getNameAsString() const {
+  return "fn-zorba-base64:encode";
+}
 // </Base64EncodeIterator>
 
 

=== modified file 'src/runtime/base64/pregenerated/base64.h'
--- src/runtime/base64/pregenerated/base64.h	2014-01-31 01:39:38 +0000
+++ src/runtime/base64/pregenerated/base64.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~Base64DecodeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~Base64EncodeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/booleans/BooleanImpl.cpp'
--- src/runtime/booleans/BooleanImpl.cpp	2013-08-14 15:16:42 +0000
+++ src/runtime/booleans/BooleanImpl.cpp	2014-02-24 23:33:07 +0000
@@ -45,34 +45,49 @@
 namespace zorba {
 
 SERIALIZABLE_CLASS_VERSIONS(FnBooleanIterator)
+DEF_GET_NAME_AS_STRING(FnBooleanIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(OrIterator)
+DEF_GET_NAME_AS_STRING(OrIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(AndIterator)
+DEF_GET_NAME_AS_STRING(AndIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CompareIterator)
+DEF_GET_NAME_AS_STRING(CompareIterator)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(TypedValueCompareIterator,
                                TypedValueCompareIterator<store::XS_DOUBLE>,
                                1)
+template<>
+DEF_GET_NAME_AS_STRING(TypedValueCompareIterator<store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(TypedValueCompareIterator,
                                TypedValueCompareIterator<store::XS_FLOAT>,
                                2)
+template<>
+DEF_GET_NAME_AS_STRING(TypedValueCompareIterator<store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(TypedValueCompareIterator,
                                TypedValueCompareIterator<store::XS_DECIMAL>,
                                3)
+template<>
+DEF_GET_NAME_AS_STRING(TypedValueCompareIterator<store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(TypedValueCompareIterator,
                                TypedValueCompareIterator<store::XS_INTEGER>,
                                4)
+template<>
+DEF_GET_NAME_AS_STRING(TypedValueCompareIterator<store::XS_INTEGER>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(TypedValueCompareIterator,
                                TypedValueCompareIterator<store::XS_STRING>,
                                5)
+template<>
+DEF_GET_NAME_AS_STRING(TypedValueCompareIterator<store::XS_STRING>)
 
 SERIALIZABLE_CLASS_VERSIONS(AtomicValuesEquivalenceIterator)
+DEF_GET_NAME_AS_STRING(AtomicValuesEquivalenceIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/booleans/BooleanImpl.h'
--- src/runtime/booleans/BooleanImpl.h	2013-02-07 17:24:36 +0000
+++ src/runtime/booleans/BooleanImpl.h	2014-02-24 23:33:07 +0000
@@ -65,6 +65,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
 public:
@@ -105,6 +107,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -129,6 +133,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -162,6 +168,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
 public:
@@ -288,6 +296,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -321,6 +331,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
 };

=== modified file 'src/runtime/booleans/pregenerated/booleans.cpp'
--- src/runtime/booleans/pregenerated/booleans.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/booleans/pregenerated/booleans.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 IsSameNodeIterator::~IsSameNodeIterator() {}
 
+
+zstring IsSameNodeIterator::getNameAsString() const {
+  return "op:is-same-node";
+}
 // </IsSameNodeIterator>
 
 
@@ -86,6 +90,10 @@
 
 NodeBeforeIterator::~NodeBeforeIterator() {}
 
+
+zstring NodeBeforeIterator::getNameAsString() const {
+  return "op:node-before";
+}
 // </NodeBeforeIterator>
 
 
@@ -114,6 +122,10 @@
 
 NodeAfterIterator::~NodeAfterIterator() {}
 
+
+zstring NodeAfterIterator::getNameAsString() const {
+  return "op:node-after";
+}
 // </NodeAfterIterator>
 
 

=== modified file 'src/runtime/booleans/pregenerated/booleans.h'
--- src/runtime/booleans/pregenerated/booleans.h	2014-01-31 01:39:38 +0000
+++ src/runtime/booleans/pregenerated/booleans.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~IsSameNodeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~NodeBeforeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -118,6 +122,8 @@
 
   virtual ~NodeAfterIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/collections/pregenerated/collections.cpp'
--- src/runtime/collections/pregenerated/collections.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/collections/pregenerated/collections.cpp	2014-02-24 23:33:07 +0000
@@ -61,6 +61,10 @@
 
 ZorbaCreateCollectionIterator::~ZorbaCreateCollectionIterator() {}
 
+
+zstring ZorbaCreateCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:create";
+}
 // </ZorbaCreateCollectionIterator>
 
 
@@ -91,6 +95,10 @@
 
 ZorbaDeleteCollectionIterator::~ZorbaDeleteCollectionIterator() {}
 
+
+zstring ZorbaDeleteCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:delete";
+}
 // </ZorbaDeleteCollectionIterator>
 
 
@@ -121,6 +129,10 @@
 
 IsAvailableCollectionIterator::~IsAvailableCollectionIterator() {}
 
+
+zstring IsAvailableCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:is-available-collection";
+}
 // </IsAvailableCollectionIterator>
 
 
@@ -153,6 +165,10 @@
 
 AvailableCollectionsIteratorState::AvailableCollectionsIteratorState() {}
 
+
+zstring AvailableCollectionsIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:available-collections";
+}
 // </AvailableCollectionsIterator>
 
 
@@ -183,6 +199,10 @@
 
 FnCollectionIteratorState::FnCollectionIteratorState() {}
 
+
+zstring FnCollectionIterator::getNameAsString() const {
+  return "fn:collection";
+}
 // </FnCollectionIterator>
 
 
@@ -215,6 +235,10 @@
 
 ZorbaCollectionIteratorState::ZorbaCollectionIteratorState() {}
 
+
+zstring ZorbaCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:collection";
+}
 // </ZorbaCollectionIterator>
 
 
@@ -243,6 +267,10 @@
 
 ZorbaCollectionNameIterator::~ZorbaCollectionNameIterator() {}
 
+
+zstring ZorbaCollectionNameIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:collection-name";
+}
 // </ZorbaCollectionNameIterator>
 
 
@@ -273,6 +301,10 @@
 
 ZorbaIndexOfIterator::~ZorbaIndexOfIterator() {}
 
+
+zstring ZorbaIndexOfIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:index-of";
+}
 // </ZorbaIndexOfIterator>
 
 
@@ -303,6 +335,10 @@
 
 ZorbaApplyInsertIteratorState::ZorbaApplyInsertIteratorState() {}
 
+
+zstring ZorbaApplyInsertIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:apply-insert";
+}
 // </ZorbaApplyInsertIterator>
 
 
@@ -333,6 +369,10 @@
 
 ZorbaInsertAfterIterator::~ZorbaInsertAfterIterator() {}
 
+
+zstring ZorbaInsertAfterIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:insert-after";
+}
 // </ZorbaInsertAfterIterator>
 
 
@@ -361,6 +401,10 @@
 
 ZorbaInsertBeforeIterator::~ZorbaInsertBeforeIterator() {}
 
+
+zstring ZorbaInsertBeforeIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:insert-before";
+}
 // </ZorbaInsertBeforeIterator>
 
 
@@ -389,6 +433,10 @@
 
 ZorbaInsertFirstIterator::~ZorbaInsertFirstIterator() {}
 
+
+zstring ZorbaInsertFirstIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:insert-first";
+}
 // </ZorbaInsertFirstIterator>
 
 
@@ -417,6 +465,10 @@
 
 ZorbaInsertLastIterator::~ZorbaInsertLastIterator() {}
 
+
+zstring ZorbaInsertLastIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:insert-last";
+}
 // </ZorbaInsertLastIterator>
 
 
@@ -447,6 +499,10 @@
 
 ZorbaApplyInsertFirstIteratorState::ZorbaApplyInsertFirstIteratorState() {}
 
+
+zstring ZorbaApplyInsertFirstIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:apply-insert-first";
+}
 // </ZorbaApplyInsertFirstIterator>
 
 
@@ -477,6 +533,10 @@
 
 ZorbaApplyInsertLastIteratorState::ZorbaApplyInsertLastIteratorState() {}
 
+
+zstring ZorbaApplyInsertLastIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:apply-insert-last";
+}
 // </ZorbaApplyInsertLastIterator>
 
 
@@ -507,6 +567,10 @@
 
 ZorbaApplyInsertBeforeIteratorState::ZorbaApplyInsertBeforeIteratorState() {}
 
+
+zstring ZorbaApplyInsertBeforeIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:apply-insert-before";
+}
 // </ZorbaApplyInsertBeforeIterator>
 
 
@@ -537,6 +601,10 @@
 
 ZorbaApplyInsertAfterIteratorState::ZorbaApplyInsertAfterIteratorState() {}
 
+
+zstring ZorbaApplyInsertAfterIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:apply-insert-after";
+}
 // </ZorbaApplyInsertAfterIterator>
 
 
@@ -567,6 +635,10 @@
 
 ZorbaDeleteIterator::~ZorbaDeleteIterator() {}
 
+
+zstring ZorbaDeleteIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:delete";
+}
 // </ZorbaDeleteIterator>
 
 
@@ -597,6 +669,10 @@
 
 ZorbaDeleteFirstIterator::~ZorbaDeleteFirstIterator() {}
 
+
+zstring ZorbaDeleteFirstIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:delete-first";
+}
 // </ZorbaDeleteFirstIterator>
 
 
@@ -627,6 +703,10 @@
 
 ZorbaDeleteLastIterator::~ZorbaDeleteLastIterator() {}
 
+
+zstring ZorbaDeleteLastIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:delete-last";
+}
 // </ZorbaDeleteLastIterator>
 
 
@@ -658,6 +738,10 @@
 
 ZorbaEditIterator::~ZorbaEditIterator() {}
 
+
+zstring ZorbaEditIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:edit";
+}
 // </ZorbaEditIterator>
 
 
@@ -686,6 +770,10 @@
 
 ZorbaInsertIterator::~ZorbaInsertIterator() {}
 
+
+zstring ZorbaInsertIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:insert";
+}
 // </ZorbaInsertIterator>
 
 
@@ -716,6 +804,10 @@
 
 ZorbaTruncateCollectionIterator::~ZorbaTruncateCollectionIterator() {}
 
+
+zstring ZorbaTruncateCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-dml:truncate";
+}
 // </ZorbaTruncateCollectionIterator>
 
 
@@ -744,6 +836,10 @@
 
 IsAvailableIndexIterator::~IsAvailableIndexIterator() {}
 
+
+zstring IsAvailableIndexIterator::getNameAsString() const {
+  return "zorba-store-indexes-static-ddl:is-available-index";
+}
 // </IsAvailableIndexIterator>
 
 
@@ -774,6 +870,10 @@
 
 AvailableIndexesIteratorState::AvailableIndexesIteratorState() {}
 
+
+zstring AvailableIndexesIterator::getNameAsString() const {
+  return "zorba-store-indexes-static-ddl:available-indexes";
+}
 // </AvailableIndexesIterator>
 
 
@@ -802,6 +902,10 @@
 
 IsActivatedICIterator::~IsActivatedICIterator() {}
 
+
+zstring IsActivatedICIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:is-activated-integrity-constraint";
+}
 // </IsActivatedICIterator>
 
 
@@ -832,6 +936,10 @@
 
 ActivatedICsIteratorState::ActivatedICsIteratorState() {}
 
+
+zstring ActivatedICsIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:activated-integrity-constraints";
+}
 // </ActivatedICsIterator>
 
 
@@ -860,6 +968,10 @@
 
 IsDeclaredCollectionIterator::~IsDeclaredCollectionIterator() {}
 
+
+zstring IsDeclaredCollectionIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:is-declared-collection";
+}
 // </IsDeclaredCollectionIterator>
 
 
@@ -890,6 +1002,10 @@
 
 DeclaredCollectionsIteratorState::DeclaredCollectionsIteratorState() {}
 
+
+zstring DeclaredCollectionsIterator::getNameAsString() const {
+  return "zorba-store-static-collections-ddl:declared-collections";
+}
 // </DeclaredCollectionsIterator>
 
 
@@ -918,6 +1034,10 @@
 
 IsDeclaredIndexIterator::~IsDeclaredIndexIterator() {}
 
+
+zstring IsDeclaredIndexIterator::getNameAsString() const {
+  return "zorba-store-indexes-static-ddl:is-declared-index";
+}
 // </IsDeclaredIndexIterator>
 
 
@@ -953,6 +1073,10 @@
   PlanIteratorState::init(planState);
   nameItState = NULL;
 }
+
+zstring DeclaredIndexesIterator::getNameAsString() const {
+  return "zorba-store-indexes-static-ddl:declared-indexes";
+}
 // </DeclaredIndexesIterator>
 
 
@@ -981,6 +1105,10 @@
 
 IsDeclaredICIterator::~IsDeclaredICIterator() {}
 
+
+zstring IsDeclaredICIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:is-declared-integrity-constraint";
+}
 // </IsDeclaredICIterator>
 
 
@@ -1016,6 +1144,10 @@
   PlanIteratorState::init(planState);
   nameItState = NULL;
 }
+
+zstring DeclaredICsIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:declared-integrity-constraints";
+}
 // </DeclaredICsIterator>
 
 
@@ -1046,6 +1178,10 @@
 
 FnURICollectionIteratorState::FnURICollectionIteratorState() {}
 
+
+zstring FnURICollectionIterator::getNameAsString() const {
+  return "fn:uri-collection";
+}
 // </FnURICollectionIterator>
 
 

=== modified file 'src/runtime/collections/pregenerated/collections.h'
--- src/runtime/collections/pregenerated/collections.h	2014-01-31 01:39:38 +0000
+++ src/runtime/collections/pregenerated/collections.h	2014-02-24 23:33:07 +0000
@@ -63,6 +63,8 @@
 
   virtual ~ZorbaCreateCollectionIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -99,6 +101,8 @@
 
   virtual ~ZorbaDeleteCollectionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -133,6 +137,8 @@
 
   virtual ~IsAvailableCollectionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -180,6 +186,8 @@
 
   virtual ~AvailableCollectionsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -224,6 +232,8 @@
 
   virtual ~FnCollectionIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool count(store::Item_t& result, PlanState& planState) const;
   store::Collection_t getCollection(PlanState& planState) const;
@@ -277,6 +287,8 @@
 
   bool isDynamic() const { return theIsDynamic; }
 
+  zstring getNameAsString() const;
+
 public:
   bool isCountOptimizable() const;
   bool count(store::Item_t& result, PlanState& planState) const;
@@ -312,6 +324,8 @@
 
   virtual ~ZorbaCollectionNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -346,6 +360,8 @@
 
   virtual ~ZorbaIndexOfIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -392,6 +408,8 @@
 
   virtual ~ZorbaApplyInsertIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -429,6 +447,8 @@
 
   virtual ~ZorbaInsertAfterIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -463,6 +483,8 @@
 
   virtual ~ZorbaInsertBeforeIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -497,6 +519,8 @@
 
   virtual ~ZorbaInsertFirstIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -531,6 +555,8 @@
 
   virtual ~ZorbaInsertLastIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -579,6 +605,8 @@
 
   virtual ~ZorbaApplyInsertFirstIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -627,6 +655,8 @@
 
   virtual ~ZorbaApplyInsertLastIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -675,6 +705,8 @@
 
   virtual ~ZorbaApplyInsertBeforeIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -723,6 +755,8 @@
 
   virtual ~ZorbaApplyInsertAfterIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -759,6 +793,8 @@
 
   virtual ~ZorbaDeleteIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -795,6 +831,8 @@
 
   virtual ~ZorbaDeleteFirstIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -831,6 +869,8 @@
 
   virtual ~ZorbaDeleteLastIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -870,6 +910,8 @@
 
   virtual ~ZorbaEditIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -904,6 +946,8 @@
 
   virtual ~ZorbaInsertIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -940,6 +984,8 @@
 
   virtual ~ZorbaTruncateCollectionIterator();
 
+  zstring getNameAsString() const;
+
 public:
   const StaticallyKnownCollection* getCollection(const store::Item_t& name, store::Collection_t& coll) const;
   void accept(PlanIterVisitor& v) const;
@@ -972,6 +1018,8 @@
 
   virtual ~IsAvailableIndexIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1015,6 +1063,8 @@
 
   virtual ~AvailableIndexesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1045,6 +1095,8 @@
 
   virtual ~IsActivatedICIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1088,6 +1140,8 @@
 
   virtual ~ActivatedICsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1118,6 +1172,8 @@
 
   virtual ~IsDeclaredCollectionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1161,6 +1217,8 @@
 
   virtual ~DeclaredCollectionsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1191,6 +1249,8 @@
 
   virtual ~IsDeclaredIndexIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1234,6 +1294,8 @@
 
   virtual ~DeclaredIndexesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1264,6 +1326,8 @@
 
   virtual ~IsDeclaredICIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1307,6 +1371,8 @@
 
   virtual ~DeclaredICsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1351,6 +1417,8 @@
 
   virtual ~FnURICollectionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/context/pregenerated/context.cpp'
--- src/runtime/context/pregenerated/context.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/context/pregenerated/context.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 CurrentDateTimeIterator::~CurrentDateTimeIterator() {}
 
+
+zstring CurrentDateTimeIterator::getNameAsString() const {
+  return "fn:current-dateTime";
+}
 // </CurrentDateTimeIterator>
 
 
@@ -86,6 +90,10 @@
 
 CurrentDateIterator::~CurrentDateIterator() {}
 
+
+zstring CurrentDateIterator::getNameAsString() const {
+  return "fn:current-date";
+}
 // </CurrentDateIterator>
 
 
@@ -114,6 +122,10 @@
 
 CurrentTimeIterator::~CurrentTimeIterator() {}
 
+
+zstring CurrentTimeIterator::getNameAsString() const {
+  return "fn:current-time";
+}
 // </CurrentTimeIterator>
 
 
@@ -142,6 +154,10 @@
 
 ImplicitTimezoneIterator::~ImplicitTimezoneIterator() {}
 
+
+zstring ImplicitTimezoneIterator::getNameAsString() const {
+  return "fn:implicit-timezone";
+}
 // </ImplicitTimezoneIterator>
 
 
@@ -170,6 +186,10 @@
 
 DefaultCollationIterator::~DefaultCollationIterator() {}
 
+
+zstring DefaultCollationIterator::getNameAsString() const {
+  return "fn:default-collation";
+}
 // </DefaultCollationIterator>
 
 

=== modified file 'src/runtime/context/pregenerated/context.h'
--- src/runtime/context/pregenerated/context.h	2014-01-31 01:39:38 +0000
+++ src/runtime/context/pregenerated/context.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~CurrentDateTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~CurrentDateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -118,6 +122,8 @@
 
   virtual ~CurrentTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -148,6 +154,8 @@
 
   virtual ~ImplicitTimezoneIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -178,6 +186,8 @@
 
   virtual ~DefaultCollationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/core/apply_updates.cpp'
--- src/runtime/core/apply_updates.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/apply_updates.cpp	2014-02-24 23:33:07 +0000
@@ -46,6 +46,7 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(ApplyIterator)
+DEF_GET_NAME_AS_STRING(ApplyIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/core/apply_updates.h'
--- src/runtime/core/apply_updates.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/apply_updates.h	2014-02-24 23:33:07 +0000
@@ -66,6 +66,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/core/constructors.cpp'
--- src/runtime/core/constructors.cpp	2013-06-22 10:59:44 +0000
+++ src/runtime/core/constructors.cpp	2014-02-24 23:33:07 +0000
@@ -50,22 +50,31 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(DocumentIterator)
+DEF_GET_NAME_AS_STRING(DocumentIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ElementIterator)
+DEF_GET_NAME_AS_STRING(ElementIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(AttributeIterator)
+DEF_GET_NAME_AS_STRING(AttributeIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(NameCastIterator)
+DEF_GET_NAME_AS_STRING(NameCastIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CommentIterator)
+DEF_GET_NAME_AS_STRING(CommentIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(PiIterator)
+DEF_GET_NAME_AS_STRING(PiIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(TextIterator)
+DEF_GET_NAME_AS_STRING(TextIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(NamespaceIterator)
+DEF_GET_NAME_AS_STRING(NamespaceIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(EnclosedIterator)
+DEF_GET_NAME_AS_STRING(EnclosedIterator)
 
 /*******************************************************************************
 

=== modified file 'src/runtime/core/constructors.h'
--- src/runtime/core/constructors.h	2013-03-05 12:34:19 +0000
+++ src/runtime/core/constructors.h	2014-02-24 23:33:07 +0000
@@ -73,6 +73,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -151,6 +153,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
   void resetImpl(PlanState& planState) const;
@@ -201,6 +205,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -244,6 +250,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -287,6 +295,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -317,6 +327,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -344,6 +356,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -401,6 +415,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -435,6 +451,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/core/fncall_iterator.cpp'
--- src/runtime/core/fncall_iterator.cpp	2014-01-15 03:02:39 +0000
+++ src/runtime/core/fncall_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -40,6 +40,7 @@
 #include "runtime/util/flowctl_exception.h"  // for ExitException
 #include "runtime/api/plan_iterator_wrapper.h"
 #include "runtime/visitors/planiter_visitor.h"
+#include "runtime/visitors/printer_visitor.h"
 
 #include "api/unmarshaller.h"
 #include "api/xqueryimpl.h"
@@ -243,6 +244,15 @@
 /*******************************************************************************
 
 ********************************************************************************/
+zstring UDFunctionCallIterator::getNameAsString() const
+{
+  return theUDF->getName()->getStringValue();
+}
+
+
+/*******************************************************************************
+
+********************************************************************************/
 bool UDFunctionCallIterator::isUpdating() const
 {
   return theUDF->isUpdating();
@@ -640,7 +650,32 @@
 }
 
 
+#if 0
 NARY_ACCEPT(UDFunctionCallIterator);
+#else
+void UDFunctionCallIterator::accept( PlanIterVisitor &v ) const {
+  v.beginVisit( *this );
+  std::vector<PlanIter_t>::const_iterator i( theChildren.begin() );
+  std::vector<PlanIter_t>::const_iterator const end( theChildren.end() );
+  for ( ; i != end; ++i )
+    (*i)->accept( v );
+  if ( PrinterVisitor *const pv = dynamic_cast<PrinterVisitor*>( &v ) ) {
+    PlanState *const state = pv->getPlanState();
+    if ( Properties::instance().getProfile() && state ) {
+      UDFunctionCallIteratorState *const udf_state =
+        StateTraitsImpl<UDFunctionCallIteratorState>::getState(
+          *state, getStateOffset()
+        );
+      if ( PlanIterator *const udf_pi = udf_state->thePlan.getp() ) {
+        pv->setPlanState( udf_state->thePlanState );
+        udf_pi->accept( *pv );
+        pv->setPlanState( state );
+      }
+    }
+  }
+  v.endVisit( *this );
+}
+#endif
 
 
 /////////////////////////////////////////////////////////////////////////////////
@@ -788,6 +823,15 @@
 }
 
 
+zstring ExtFunctionCallIterator::getNameAsString() const {
+  String const uri( theFunction->getURI() );
+  String const local( theFunction->getLocalName() );
+
+  zstring name( '{' + Unmarshaller::getInternalString( uri ) + '}' + Unmarshaller::getInternalString( local ) );
+  return name;
+}
+
+
 void ExtFunctionCallIterator::serialize(serialization::Archiver& ar)
 {
   ar.dont_allow_delay_for_plan_sctx = true;

=== modified file 'src/runtime/core/fncall_iterator.h'
--- src/runtime/core/fncall_iterator.h	2014-01-15 00:58:24 +0000
+++ src/runtime/core/fncall_iterator.h	2014-02-24 23:33:07 +0000
@@ -168,6 +168,8 @@
 
   virtual ~UDFunctionCallIterator();
 
+  zstring getNameAsString() const;
+
   bool isUpdating() const;
 
   void setDynamic() { theIsDynamic = true; }
@@ -252,6 +254,8 @@
 
   virtual ~ExtFunctionCallIterator();
 
+  zstring getNameAsString() const;
+
   virtual bool isUpdating() const { return theIsUpdating; }
 
   void accept(PlanIterVisitor& v) const;

=== modified file 'src/runtime/core/gflwor/count_iterator.cpp'
--- src/runtime/core/gflwor/count_iterator.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/count_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -31,6 +31,7 @@
 namespace flwor 
 {
 SERIALIZABLE_CLASS_VERSIONS(CountIterator)
+DEF_GET_NAME_AS_STRING(CountIterator)
 
 
 /////////////////////////////////////////////////////////////////////////////////

=== modified file 'src/runtime/core/gflwor/count_iterator.h'
--- src/runtime/core/gflwor/count_iterator.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/count_iterator.h	2014-02-24 23:33:07 +0000
@@ -70,6 +70,8 @@
   
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl ( store::Item_t& result, PlanState& planState ) const;
 };
 

=== modified file 'src/runtime/core/gflwor/outerfor_iterator.cpp'
--- src/runtime/core/gflwor/outerfor_iterator.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/outerfor_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -33,6 +33,7 @@
 namespace flwor
 {
 SERIALIZABLE_CLASS_VERSIONS(OuterForIterator)
+DEF_GET_NAME_AS_STRING(OuterForIterator)
 
 
 /////////////////////////////////////////////////////////////////////////////////

=== modified file 'src/runtime/core/gflwor/outerfor_iterator.h'
--- src/runtime/core/gflwor/outerfor_iterator.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/outerfor_iterator.h	2014-02-24 23:33:07 +0000
@@ -75,6 +75,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/core/gflwor/tuplesource_iterator.cpp'
--- src/runtime/core/gflwor/tuplesource_iterator.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/tuplesource_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -36,6 +36,7 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(TupleSourceIterator)
+DEF_GET_NAME_AS_STRING(TupleSourceIterator)
 
 
 bool TupleSourceIterator::nextImpl(store::Item_t& aResult, PlanState& aPlanState) const

=== modified file 'src/runtime/core/gflwor/tuplestream_iterator.cpp'
--- src/runtime/core/gflwor/tuplestream_iterator.cpp	2013-09-17 21:12:49 +0000
+++ src/runtime/core/gflwor/tuplestream_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -35,6 +35,7 @@
 namespace flwor 
 {
 SERIALIZABLE_CLASS_VERSIONS(TupleStreamIterator)
+DEF_GET_NAME_AS_STRING(TupleStreamIterator)
 
 
 TupleStreamIterator::TupleStreamIterator(

=== modified file 'src/runtime/core/gflwor/tuplestream_iterator.h'
--- src/runtime/core/gflwor/tuplestream_iterator.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/tuplestream_iterator.h	2014-02-24 23:33:07 +0000
@@ -67,6 +67,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl ( store::Item_t& result, PlanState& planState ) const;
 };
 

=== modified file 'src/runtime/core/gflwor/where_iterator.cpp'
--- src/runtime/core/gflwor/where_iterator.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/gflwor/where_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -28,6 +28,7 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(WhereIterator)
+DEF_GET_NAME_AS_STRING(WhereIterator)
 
 
 /////////////////////////////////////////////////////////////////////////////////

=== modified file 'src/runtime/core/internal_operators.cpp'
--- src/runtime/core/internal_operators.cpp	2013-10-10 03:54:10 +0000
+++ src/runtime/core/internal_operators.cpp	2014-02-24 23:33:07 +0000
@@ -30,8 +30,10 @@
 namespace zorba {
 
 SERIALIZABLE_CLASS_VERSIONS(HoistIterator)
+DEF_GET_NAME_AS_STRING(HoistIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(UnhoistIterator)
+DEF_GET_NAME_AS_STRING(UnhoistIterator)
 
 
 

=== modified file 'src/runtime/core/item_iterator.cpp'
--- src/runtime/core/item_iterator.cpp	2013-05-28 18:20:54 +0000
+++ src/runtime/core/item_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -28,10 +28,13 @@
 namespace zorba
 {
 SERIALIZABLE_CLASS_VERSIONS(EmptyIterator)
+DEF_GET_NAME_AS_STRING(EmptyIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(SingletonIterator)
+DEF_GET_NAME_AS_STRING(SingletonIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(IfThenElseIterator)
+DEF_GET_NAME_AS_STRING(IfThenElseIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/core/item_iterator.h'
--- src/runtime/core/item_iterator.h	2013-05-28 18:20:54 +0000
+++ src/runtime/core/item_iterator.h	2014-02-24 23:33:07 +0000
@@ -63,6 +63,8 @@
 
   virtual ~SingletonIterator() {}
   
+  zstring getNameAsString() const;
+
   const store::Item_t& getValue() const { return theValue; }
 
   void accept(PlanIterVisitor& v) const;
@@ -115,6 +117,8 @@
         PlanIter_t& aElseIter,
         bool aIsBooleanIter = false);
 
+  zstring getNameAsString() const;
+
   virtual uint32_t getStateSize() const { return sizeof(IfThenElseIteratorState); }
 
   virtual uint32_t getStateSizeOfSubtree() const;

=== modified file 'src/runtime/core/nodeid_iterators.cpp'
--- src/runtime/core/nodeid_iterators.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/core/nodeid_iterators.cpp	2014-02-24 23:33:07 +0000
@@ -30,8 +30,10 @@
 namespace zorba
 {
 SERIALIZABLE_CLASS_VERSIONS(NodeDistinctIterator)
+DEF_GET_NAME_AS_STRING(NodeDistinctIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(NodeSortIterator)
+DEF_GET_NAME_AS_STRING(NodeSortIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/core/nodeid_iterators.h'
--- src/runtime/core/nodeid_iterators.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/nodeid_iterators.h	2014-02-24 23:33:07 +0000
@@ -81,6 +81,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -142,6 +144,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/core/path_iterators.cpp'
--- src/runtime/core/path_iterators.cpp	2013-06-13 14:54:50 +0000
+++ src/runtime/core/path_iterators.cpp	2014-02-24 23:33:07 +0000
@@ -143,36 +143,52 @@
 
 
 UNARY_ACCEPT(SelfAxisIterator);
+DEF_GET_NAME_AS_STRING(SelfAxisIterator)
 
 UNARY_ACCEPT(AttributeAxisIterator);
+DEF_GET_NAME_AS_STRING(AttributeAxisIterator)
 
 UNARY_ACCEPT(ParentAxisIterator);
+DEF_GET_NAME_AS_STRING(ParentAxisIterator)
 
 UNARY_ACCEPT(AncestorAxisIterator);
+DEF_GET_NAME_AS_STRING(AncestorAxisIterator)
 
 UNARY_ACCEPT(AncestorReverseAxisIterator);
+DEF_GET_NAME_AS_STRING(AncestorReverseAxisIterator)
 
 UNARY_ACCEPT(AncestorSelfAxisIterator);
+DEF_GET_NAME_AS_STRING(AncestorSelfAxisIterator)
 
 UNARY_ACCEPT(AncestorSelfReverseAxisIterator);
+DEF_GET_NAME_AS_STRING(AncestorSelfReverseAxisIterator)
 
 UNARY_ACCEPT(RSiblingAxisIterator);
+DEF_GET_NAME_AS_STRING(RSiblingAxisIterator)
 
 UNARY_ACCEPT(LSiblingAxisIterator);
+DEF_GET_NAME_AS_STRING(LSiblingAxisIterator)
 
 UNARY_ACCEPT(LSiblingReverseAxisIterator);
+DEF_GET_NAME_AS_STRING(LSiblingReverseAxisIterator)
 
 UNARY_ACCEPT(ChildAxisIterator);
+DEF_GET_NAME_AS_STRING(ChildAxisIterator)
 
 UNARY_ACCEPT(DescendantAxisIterator);
+DEF_GET_NAME_AS_STRING(DescendantAxisIterator)
 
 UNARY_ACCEPT(DescendantSelfAxisIterator);
+DEF_GET_NAME_AS_STRING(DescendantSelfAxisIterator)
 
 UNARY_ACCEPT(PrecedingAxisIterator);
+DEF_GET_NAME_AS_STRING(PrecedingAxisIterator)
 
 UNARY_ACCEPT(PrecedingReverseAxisIterator);
+DEF_GET_NAME_AS_STRING(PrecedingReverseAxisIterator)
 
 UNARY_ACCEPT(FollowingAxisIterator);
+DEF_GET_NAME_AS_STRING(FollowingAxisIterator)
 
 
 

=== modified file 'src/runtime/core/path_iterators.h'
--- src/runtime/core/path_iterators.h	2013-02-07 17:24:36 +0000
+++ src/runtime/core/path_iterators.h	2014-02-24 23:33:07 +0000
@@ -205,6 +205,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -248,6 +250,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -280,6 +284,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -316,6 +322,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -354,6 +362,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -383,6 +393,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -417,6 +429,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -465,6 +479,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -497,6 +513,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -547,6 +565,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -590,6 +610,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -675,6 +697,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -709,6 +733,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -760,6 +786,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -849,6 +877,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -903,6 +933,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/core/sequencetypes.cpp'
--- src/runtime/core/sequencetypes.cpp	2014-01-17 20:07:49 +0000
+++ src/runtime/core/sequencetypes.cpp	2014-02-24 23:33:07 +0000
@@ -39,16 +39,22 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(InstanceOfIterator)
+DEF_GET_NAME_AS_STRING(InstanceOfIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CastIterator)
+DEF_GET_NAME_AS_STRING(CastIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CastableIterator)
+DEF_GET_NAME_AS_STRING(CastableIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(PromoteIterator)
+DEF_GET_NAME_AS_STRING(PromoteIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(TreatIterator)
+DEF_GET_NAME_AS_STRING(TreatIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(EitherNodesOrAtomicsIterator)
+DEF_GET_NAME_AS_STRING(EitherNodesOrAtomicsIterator)
 
 
 /*******************************************************************************
@@ -628,6 +634,7 @@
   }
 }
 
+
 bool TreatIterator::nextImpl(store::Item_t& result, PlanState& planState) const
 {
   store::Item_t temp;

=== modified file 'src/runtime/core/sequencetypes.h'
--- src/runtime/core/sequencetypes.h	2014-01-17 20:07:49 +0000
+++ src/runtime/core/sequencetypes.h	2014-02-24 23:33:07 +0000
@@ -64,6 +64,8 @@
   ~InstanceOfIterator();
 
   void accept(PlanIterVisitor& v) const;
+
+  zstring getNameAsString() const;
   
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
@@ -114,6 +116,8 @@
 
   void accept(PlanIterVisitor& v) const;
   
+  zstring getNameAsString() const;
+  
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -151,6 +155,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+  
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -192,6 +198,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+  
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
 protected:
@@ -241,6 +249,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+  
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
   bool count(store::Item_t& result, PlanState& planState) const;

=== modified file 'src/runtime/core/var_iterators.cpp'
--- src/runtime/core/var_iterators.cpp	2014-01-17 01:22:32 +0000
+++ src/runtime/core/var_iterators.cpp	2014-02-24 23:33:07 +0000
@@ -41,16 +41,22 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(CtxVarIterator)
+DEF_GET_NAME_AS_STRING(CtxVarIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CtxVarDeclareIterator)
+DEF_GET_NAME_AS_STRING(CtxVarDeclareIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CtxVarAssignIterator)
+DEF_GET_NAME_AS_STRING(CtxVarAssignIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CtxVarIsSetIterator)
+DEF_GET_NAME_AS_STRING(CtxVarIsSetIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ForVarIterator)
+DEF_GET_NAME_AS_STRING(ForVarIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(LetVarIterator)
+DEF_GET_NAME_AS_STRING(LetVarIterator)
 
 
 /////////////////////////////////////////////////////////////////////////////////

=== modified file 'src/runtime/core/var_iterators.h'
--- src/runtime/core/var_iterators.h	2013-05-08 20:14:47 +0000
+++ src/runtime/core/var_iterators.h	2014-02-24 23:33:07 +0000
@@ -93,6 +93,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -152,6 +154,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -196,6 +200,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -301,6 +307,8 @@
 
   void closeImpl(PlanState& planState);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -357,6 +365,8 @@
 
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
+  zstring getNameAsString() const;
+
   void bind(store::Item* value, PlanState& planState);
 };
 
@@ -472,6 +482,8 @@
 
   void closeImpl(PlanState& planState);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/csv/pregenerated/csv.cpp'
--- src/runtime/csv/pregenerated/csv.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/csv/pregenerated/csv.cpp	2014-02-24 23:33:07 +0000
@@ -79,6 +79,10 @@
   missing_ = missing::null;
   skip_called_ = false;
 }
+
+zstring CsvParseIterator::getNameAsString() const {
+  return "fn-zorba-csv:parse";
+}
 // </CsvParseIterator>
 
 
@@ -115,6 +119,10 @@
 void CsvSerializeIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring CsvSerializeIterator::getNameAsString() const {
+  return "fn-zorba-csv:serialize";
+}
 // </CsvSerializeIterator>
 
 

=== modified file 'src/runtime/csv/pregenerated/csv.h'
--- src/runtime/csv/pregenerated/csv.h	2014-01-31 01:39:38 +0000
+++ src/runtime/csv/pregenerated/csv.h	2014-02-24 23:33:07 +0000
@@ -86,6 +86,8 @@
 
   virtual ~CsvParseIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool count(store::Item_t& result, PlanState& planState) const;
   bool skip(int64_t count, PlanState& planState) const;
@@ -140,6 +142,8 @@
 
   virtual ~CsvSerializeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/datetime/pregenerated/datetime.cpp'
--- src/runtime/datetime/pregenerated/datetime.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/datetime/pregenerated/datetime.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 CurrentDate::~CurrentDate() {}
 
+
+zstring CurrentDate::getNameAsString() const {
+  return "fn-zorba-dateTime:current-date";
+}
 // </CurrentDate>
 
 
@@ -86,6 +90,10 @@
 
 CurrentDateTime::~CurrentDateTime() {}
 
+
+zstring CurrentDateTime::getNameAsString() const {
+  return "fn-zorba-dateTime:current-dateTime";
+}
 // </CurrentDateTime>
 
 
@@ -114,6 +122,10 @@
 
 CurrentTime::~CurrentTime() {}
 
+
+zstring CurrentTime::getNameAsString() const {
+  return "fn-zorba-dateTime:current-time";
+}
 // </CurrentTime>
 
 
@@ -142,6 +154,10 @@
 
 MillisToDateTime::~MillisToDateTime() {}
 
+
+zstring MillisToDateTime::getNameAsString() const {
+  return "fn-zorba-dateTime:millis-to-dateTime";
+}
 // </MillisToDateTime>
 
 
@@ -170,6 +186,10 @@
 
 ParseDate::~ParseDate() {}
 
+
+zstring ParseDate::getNameAsString() const {
+  return "fn-zorba-dateTime:parse-date";
+}
 // </ParseDate>
 
 
@@ -198,6 +218,10 @@
 
 ParseDateTime::~ParseDateTime() {}
 
+
+zstring ParseDateTime::getNameAsString() const {
+  return "fn-zorba-dateTime:parse-dateTime";
+}
 // </ParseDateTime>
 
 
@@ -226,6 +250,10 @@
 
 ParseTime::~ParseTime() {}
 
+
+zstring ParseTime::getNameAsString() const {
+  return "fn-zorba-dateTime:parse-time";
+}
 // </ParseTime>
 
 
@@ -254,6 +282,10 @@
 
 Timestamp::~Timestamp() {}
 
+
+zstring Timestamp::getNameAsString() const {
+  return "fn-zorba-dateTime:timestamp";
+}
 // </Timestamp>
 
 
@@ -282,6 +314,10 @@
 
 UTCOffset::~UTCOffset() {}
 
+
+zstring UTCOffset::getNameAsString() const {
+  return "fn-zorba-dateTime:utc-offset";
+}
 // </UTCOffset>
 
 

=== modified file 'src/runtime/datetime/pregenerated/datetime.h'
--- src/runtime/datetime/pregenerated/datetime.h	2014-01-31 01:39:38 +0000
+++ src/runtime/datetime/pregenerated/datetime.h	2014-02-24 23:33:07 +0000
@@ -61,6 +61,8 @@
 
   virtual ~CurrentDate();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -93,6 +95,8 @@
 
   virtual ~CurrentDateTime();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -125,6 +129,8 @@
 
   virtual ~CurrentTime();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -157,6 +163,8 @@
 
   virtual ~MillisToDateTime();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -189,6 +197,8 @@
 
   virtual ~ParseDate();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -221,6 +231,8 @@
 
   virtual ~ParseDateTime();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -253,6 +265,8 @@
 
   virtual ~ParseTime();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -285,6 +299,8 @@
 
   virtual ~Timestamp();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -317,6 +333,8 @@
 
   virtual ~UTCOffset();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/debug/pregenerated/debug_iterator.cpp'
--- src/runtime/debug/pregenerated/debug_iterator.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/debug/pregenerated/debug_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -79,6 +79,10 @@
   PlanIteratorState::reset(planState);
   notEmptySequence = false;
 }
+
+zstring DebugIterator::getNameAsString() const {
+  return "DebugIterator";
+}
 // </DebugIterator>
 
 #endif

=== modified file 'src/runtime/debug/pregenerated/debug_iterator.h'
--- src/runtime/debug/pregenerated/debug_iterator.h	2014-01-31 01:39:38 +0000
+++ src/runtime/debug/pregenerated/debug_iterator.h	2014-02-24 23:33:07 +0000
@@ -99,6 +99,8 @@
 
   void setVarDeclaration(bool aValue) { theIsVarDeclaration= aValue; }
 
+  zstring getNameAsString() const;
+
 public:
   const DebugIterator* getDebuggerParent() const;
   std::vector<DebugIterator*> getDebuggerChildren() const;

=== modified file 'src/runtime/durations_dates_times/DurationsDatesTimesImpl.cpp'
--- src/runtime/durations_dates_times/DurationsDatesTimesImpl.cpp	2013-09-17 21:12:49 +0000
+++ src/runtime/durations_dates_times/DurationsDatesTimesImpl.cpp	2014-02-24 23:33:07 +0000
@@ -52,10 +52,13 @@
 
 
 BINARY_ACCEPT(FnDateTimeConstructorIterator);
+DEF_GET_NAME_AS_STRING(FnDateTimeConstructorIterator)
 
 UNARY_ACCEPT(FnAdjustToTimeZoneIterator_1);
+DEF_GET_NAME_AS_STRING(FnAdjustToTimeZoneIterator_1)
 
 BINARY_ACCEPT(FnAdjustToTimeZoneIterator_2);
+DEF_GET_NAME_AS_STRING(FnAdjustToTimeZoneIterator_2)
 
 
 bool FnDateTimeConstructorIterator::nextImpl(store::Item_t& result, PlanState& planState) const

=== modified file 'src/runtime/durations_dates_times/format_dateTime.cpp'
--- src/runtime/durations_dates_times/format_dateTime.cpp	2013-08-02 18:34:08 +0000
+++ src/runtime/durations_dates_times/format_dateTime.cpp	2014-02-24 23:33:07 +0000
@@ -57,6 +57,7 @@
 
 SERIALIZABLE_CLASS_VERSIONS(FnFormatDateTimeIterator)
 NARY_ACCEPT(FnFormatDateTimeIterator);
+DEF_GET_NAME_AS_STRING(FnFormatDateTimeIterator)
 
 ///////////////////////////////////////////////////////////////////////////////
 

=== modified file 'src/runtime/durations_dates_times/format_dateTime.h'
--- src/runtime/durations_dates_times/format_dateTime.h	2013-03-03 15:28:41 +0000
+++ src/runtime/durations_dates_times/format_dateTime.h	2014-02-24 23:33:07 +0000
@@ -62,6 +62,8 @@
 
   void accept( PlanIterVisitor& ) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl( store::Item_t&, PlanState& ) const;
 
 private:

=== modified file 'src/runtime/durations_dates_times/pregenerated/durations_dates_times.cpp'
--- src/runtime/durations_dates_times/pregenerated/durations_dates_times.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/durations_dates_times/pregenerated/durations_dates_times.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 YearsFromDurationIterator::~YearsFromDurationIterator() {}
 
+
+zstring YearsFromDurationIterator::getNameAsString() const {
+  return "fn:years-from-duration";
+}
 // </YearsFromDurationIterator>
 
 
@@ -86,6 +90,10 @@
 
 MonthsFromDurationIterator::~MonthsFromDurationIterator() {}
 
+
+zstring MonthsFromDurationIterator::getNameAsString() const {
+  return "fn:months-from-duration";
+}
 // </MonthsFromDurationIterator>
 
 
@@ -114,6 +122,10 @@
 
 DaysFromDurationIterator::~DaysFromDurationIterator() {}
 
+
+zstring DaysFromDurationIterator::getNameAsString() const {
+  return "fn:days-from-duration";
+}
 // </DaysFromDurationIterator>
 
 
@@ -142,6 +154,10 @@
 
 HoursFromDurationIterator::~HoursFromDurationIterator() {}
 
+
+zstring HoursFromDurationIterator::getNameAsString() const {
+  return "fn:hours-from-duration";
+}
 // </HoursFromDurationIterator>
 
 
@@ -170,6 +186,10 @@
 
 MinutesFromDurationIterator::~MinutesFromDurationIterator() {}
 
+
+zstring MinutesFromDurationIterator::getNameAsString() const {
+  return "fn:minutes-from-duration";
+}
 // </MinutesFromDurationIterator>
 
 
@@ -198,6 +218,10 @@
 
 SecondsFromDurationIterator::~SecondsFromDurationIterator() {}
 
+
+zstring SecondsFromDurationIterator::getNameAsString() const {
+  return "fn:seconds-from-duration";
+}
 // </SecondsFromDurationIterator>
 
 
@@ -226,6 +250,10 @@
 
 YearFromDatetimeIterator::~YearFromDatetimeIterator() {}
 
+
+zstring YearFromDatetimeIterator::getNameAsString() const {
+  return "fn:year-from-dateTime";
+}
 // </YearFromDatetimeIterator>
 
 
@@ -254,6 +282,10 @@
 
 MonthFromDatetimeIterator::~MonthFromDatetimeIterator() {}
 
+
+zstring MonthFromDatetimeIterator::getNameAsString() const {
+  return "fn:month-from-dateTime";
+}
 // </MonthFromDatetimeIterator>
 
 
@@ -282,6 +314,10 @@
 
 DayFromDatetimeIterator::~DayFromDatetimeIterator() {}
 
+
+zstring DayFromDatetimeIterator::getNameAsString() const {
+  return "fn:day-from-dateTime";
+}
 // </DayFromDatetimeIterator>
 
 
@@ -310,6 +346,10 @@
 
 HoursFromDatetimeIterator::~HoursFromDatetimeIterator() {}
 
+
+zstring HoursFromDatetimeIterator::getNameAsString() const {
+  return "fn:hours-from-dateTime";
+}
 // </HoursFromDatetimeIterator>
 
 
@@ -338,6 +378,10 @@
 
 MinutesFromDatetimeIterator::~MinutesFromDatetimeIterator() {}
 
+
+zstring MinutesFromDatetimeIterator::getNameAsString() const {
+  return "fn:minutes-from-dateTime";
+}
 // </MinutesFromDatetimeIterator>
 
 
@@ -366,6 +410,10 @@
 
 SecondsFromDatetimeIterator::~SecondsFromDatetimeIterator() {}
 
+
+zstring SecondsFromDatetimeIterator::getNameAsString() const {
+  return "fn:seconds-from-dateTime";
+}
 // </SecondsFromDatetimeIterator>
 
 
@@ -394,6 +442,10 @@
 
 TimezoneFromDatetimeIterator::~TimezoneFromDatetimeIterator() {}
 
+
+zstring TimezoneFromDatetimeIterator::getNameAsString() const {
+  return "fn:timezone-from-dateTime";
+}
 // </TimezoneFromDatetimeIterator>
 
 
@@ -422,6 +474,10 @@
 
 YearFromDateIterator::~YearFromDateIterator() {}
 
+
+zstring YearFromDateIterator::getNameAsString() const {
+  return "fn:year-from-date";
+}
 // </YearFromDateIterator>
 
 
@@ -450,6 +506,10 @@
 
 MonthFromDateIterator::~MonthFromDateIterator() {}
 
+
+zstring MonthFromDateIterator::getNameAsString() const {
+  return "fn:month-from-date";
+}
 // </MonthFromDateIterator>
 
 
@@ -478,6 +538,10 @@
 
 DayFromDateIterator::~DayFromDateIterator() {}
 
+
+zstring DayFromDateIterator::getNameAsString() const {
+  return "fn:day-from-date";
+}
 // </DayFromDateIterator>
 
 
@@ -506,6 +570,10 @@
 
 TimezoneFromDateIterator::~TimezoneFromDateIterator() {}
 
+
+zstring TimezoneFromDateIterator::getNameAsString() const {
+  return "fn:timezone-from-date";
+}
 // </TimezoneFromDateIterator>
 
 
@@ -534,6 +602,10 @@
 
 HoursFromTimeIterator::~HoursFromTimeIterator() {}
 
+
+zstring HoursFromTimeIterator::getNameAsString() const {
+  return "fn:hours-from-time";
+}
 // </HoursFromTimeIterator>
 
 
@@ -562,6 +634,10 @@
 
 MinutesFromTimeIterator::~MinutesFromTimeIterator() {}
 
+
+zstring MinutesFromTimeIterator::getNameAsString() const {
+  return "fn:minutes-from-time";
+}
 // </MinutesFromTimeIterator>
 
 
@@ -590,6 +666,10 @@
 
 SecondsFromTimeIterator::~SecondsFromTimeIterator() {}
 
+
+zstring SecondsFromTimeIterator::getNameAsString() const {
+  return "fn:seconds-from-time";
+}
 // </SecondsFromTimeIterator>
 
 
@@ -618,6 +698,10 @@
 
 TimezoneFromTimeIterator::~TimezoneFromTimeIterator() {}
 
+
+zstring TimezoneFromTimeIterator::getNameAsString() const {
+  return "fn:timezone-from-time";
+}
 // </TimezoneFromTimeIterator>
 
 

=== modified file 'src/runtime/durations_dates_times/pregenerated/durations_dates_times.h'
--- src/runtime/durations_dates_times/pregenerated/durations_dates_times.h	2014-01-31 01:39:38 +0000
+++ src/runtime/durations_dates_times/pregenerated/durations_dates_times.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~YearsFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~MonthsFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -118,6 +122,8 @@
 
   virtual ~DaysFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -148,6 +154,8 @@
 
   virtual ~HoursFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -178,6 +186,8 @@
 
   virtual ~MinutesFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -208,6 +218,8 @@
 
   virtual ~SecondsFromDurationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -238,6 +250,8 @@
 
   virtual ~YearFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -268,6 +282,8 @@
 
   virtual ~MonthFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -298,6 +314,8 @@
 
   virtual ~DayFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -328,6 +346,8 @@
 
   virtual ~HoursFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -358,6 +378,8 @@
 
   virtual ~MinutesFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -388,6 +410,8 @@
 
   virtual ~SecondsFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -418,6 +442,8 @@
 
   virtual ~TimezoneFromDatetimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -448,6 +474,8 @@
 
   virtual ~YearFromDateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -478,6 +506,8 @@
 
   virtual ~MonthFromDateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -508,6 +538,8 @@
 
   virtual ~DayFromDateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -538,6 +570,8 @@
 
   virtual ~TimezoneFromDateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -568,6 +602,8 @@
 
   virtual ~HoursFromTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -598,6 +634,8 @@
 
   virtual ~MinutesFromTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -628,6 +666,8 @@
 
   virtual ~SecondsFromTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -658,6 +698,8 @@
 
   virtual ~TimezoneFromTimeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.cpp'
--- src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.cpp	2014-02-24 23:33:07 +0000
@@ -59,6 +59,10 @@
 
 ErrorIterator::~ErrorIterator() {}
 
+
+zstring ErrorIterator::getNameAsString() const {
+  return "fn:error";
+}
 // </ErrorIterator>
 
 
@@ -107,6 +111,10 @@
   theOS = 0;
   theSerializer = NULL;
 }
+
+zstring TraceIterator::getNameAsString() const {
+  return "fn:trace";
+}
 // </TraceIterator>
 
 

=== modified file 'src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.h'
--- src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.h	2014-01-31 01:39:38 +0000
+++ src/runtime/errors_and_diagnostics/pregenerated/errors_and_diagnostics.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~ErrorIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -104,6 +106,8 @@
 
   virtual ~TraceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.cpp'
--- src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.cpp	2014-02-24 23:33:07 +0000
@@ -59,6 +59,10 @@
 
 ReadLineIterator::~ReadLineIterator() {}
 
+
+zstring ReadLineIterator::getNameAsString() const {
+  return "op-zorba:read-line";
+}
 // </ReadLineIterator>
 
 
@@ -89,6 +93,10 @@
 
 PrintIterator::~PrintIterator() {}
 
+
+zstring PrintIterator::getNameAsString() const {
+  return "fn-zorba-util:print";
+}
 // </PrintIterator>
 
 
@@ -122,6 +130,10 @@
 
 FunctionTraceIterator::~FunctionTraceIterator() {}
 
+
+zstring FunctionTraceIterator::getNameAsString() const {
+  return "FunctionTraceIterator";
+}
 // </FunctionTraceIterator>
 
 

=== modified file 'src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.h'
--- src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.h	2014-01-31 01:39:38 +0000
+++ src/runtime/errors_and_diagnostics/pregenerated/other_diagnostics.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~ReadLineIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -92,6 +94,8 @@
 
   virtual ~PrintIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -136,6 +140,8 @@
 
   virtual ~FunctionTraceIterator();
 
+  zstring getNameAsString() const;
+
 public:
   void setFunctionName(const store::Item_t& aFunctionName);
   void setFunctionCallLocation(const QueryLoc& aFunctionLocation);

=== modified file 'src/runtime/eval/eval.cpp'
--- src/runtime/eval/eval.cpp	2013-07-26 12:48:04 +0000
+++ src/runtime/eval/eval.cpp	2014-02-24 23:33:07 +0000
@@ -50,6 +50,7 @@
 
 
 SERIALIZABLE_CLASS_VERSIONS(EvalIterator)
+DEF_GET_NAME_AS_STRING(EvalIterator)
 
 
 /****************************************************************************//**

=== modified file 'src/runtime/eval/eval.h'
--- src/runtime/eval/eval.h	2013-09-17 21:12:49 +0000
+++ src/runtime/eval/eval.h	2014-02-24 23:33:07 +0000
@@ -124,6 +124,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const
   {
     return nextORcount(false, result, planState);

=== modified file 'src/runtime/fetch/pregenerated/fetch.cpp'
--- src/runtime/fetch/pregenerated/fetch.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/fetch/pregenerated/fetch.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 FetchContentIterator::~FetchContentIterator() {}
 
+
+zstring FetchContentIterator::getNameAsString() const {
+  return "fn-zorba-fetch:content";
+}
 // </FetchContentIterator>
 
 
@@ -86,6 +90,10 @@
 
 FetchContentBinaryIterator::~FetchContentBinaryIterator() {}
 
+
+zstring FetchContentBinaryIterator::getNameAsString() const {
+  return "fn-zorba-fetch:content-binary";
+}
 // </FetchContentBinaryIterator>
 
 
@@ -114,6 +122,10 @@
 
 FetchContentTypeIterator::~FetchContentTypeIterator() {}
 
+
+zstring FetchContentTypeIterator::getNameAsString() const {
+  return "fn-zorba-fetch:content-type";
+}
 // </FetchContentTypeIterator>
 
 

=== modified file 'src/runtime/fetch/pregenerated/fetch.h'
--- src/runtime/fetch/pregenerated/fetch.h	2014-01-31 01:39:38 +0000
+++ src/runtime/fetch/pregenerated/fetch.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~FetchContentIterator();
 
+  zstring getNameAsString() const;
+
 public:
   static void destroyStream(std::istream& aStream);
   void accept(PlanIterVisitor& v) const;
@@ -90,6 +92,8 @@
 
   virtual ~FetchContentBinaryIterator();
 
+  zstring getNameAsString() const;
+
 public:
   static void destroyStream(std::istream& aStream);
   void accept(PlanIterVisitor& v) const;
@@ -122,6 +126,8 @@
 
   virtual ~FetchContentTypeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/fnput/pregenerated/fnput.cpp'
--- src/runtime/fnput/pregenerated/fnput.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/fnput/pregenerated/fnput.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 FnPutIterator::~FnPutIterator() {}
 
+
+zstring FnPutIterator::getNameAsString() const {
+  return "fn:put";
+}
 // </FnPutIterator>
 
 

=== modified file 'src/runtime/fnput/pregenerated/fnput.h'
--- src/runtime/fnput/pregenerated/fnput.h	2014-01-31 01:39:38 +0000
+++ src/runtime/fnput/pregenerated/fnput.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~FnPutIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/full_text/pregenerated/ft_module.cpp'
--- src/runtime/full_text/pregenerated/ft_module.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/full_text/pregenerated/ft_module.cpp	2014-02-24 23:33:07 +0000
@@ -60,6 +60,10 @@
 
 CurrentCompareOptionsIterator::~CurrentCompareOptionsIterator() {}
 
+
+zstring CurrentCompareOptionsIterator::getNameAsString() const {
+  return "full-text:current-compare-options";
+}
 // </CurrentCompareOptionsIterator>
 
 #endif
@@ -89,6 +93,10 @@
 
 CurrentLangIterator::~CurrentLangIterator() {}
 
+
+zstring CurrentLangIterator::getNameAsString() const {
+  return "full-text:current-lang";
+}
 // </CurrentLangIterator>
 
 #endif
@@ -118,6 +126,10 @@
 
 HostLangIterator::~HostLangIterator() {}
 
+
+zstring HostLangIterator::getNameAsString() const {
+  return "full-text:host-lang";
+}
 // </HostLangIterator>
 
 #endif
@@ -147,6 +159,10 @@
 
 IsStemLangSupportedIterator::~IsStemLangSupportedIterator() {}
 
+
+zstring IsStemLangSupportedIterator::getNameAsString() const {
+  return "full-text:is-stem-lang-supported";
+}
 // </IsStemLangSupportedIterator>
 
 #endif
@@ -176,6 +192,10 @@
 
 IsStopWordIterator::~IsStopWordIterator() {}
 
+
+zstring IsStopWordIterator::getNameAsString() const {
+  return "full-text:is-stop-word";
+}
 // </IsStopWordIterator>
 
 #endif
@@ -205,6 +225,10 @@
 
 IsStopWordLangSupportedIterator::~IsStopWordLangSupportedIterator() {}
 
+
+zstring IsStopWordLangSupportedIterator::getNameAsString() const {
+  return "full-text:is-stop-word-lang-supported";
+}
 // </IsStopWordLangSupportedIterator>
 
 #endif
@@ -234,6 +258,10 @@
 
 IsThesaurusLangSupportedIterator::~IsThesaurusLangSupportedIterator() {}
 
+
+zstring IsThesaurusLangSupportedIterator::getNameAsString() const {
+  return "full-text:is-thesaurus-lang-supported";
+}
 // </IsThesaurusLangSupportedIterator>
 
 #endif
@@ -263,6 +291,10 @@
 
 IsTokenizerLangSupportedIterator::~IsTokenizerLangSupportedIterator() {}
 
+
+zstring IsTokenizerLangSupportedIterator::getNameAsString() const {
+  return "full-text:is-tokenizer-lang-supported";
+}
 // </IsTokenizerLangSupportedIterator>
 
 #endif
@@ -292,6 +324,10 @@
 
 StemIterator::~StemIterator() {}
 
+
+zstring StemIterator::getNameAsString() const {
+  return "full-text:stem";
+}
 // </StemIterator>
 
 #endif
@@ -321,6 +357,10 @@
 
 StripDiacriticsIterator::~StripDiacriticsIterator() {}
 
+
+zstring StripDiacriticsIterator::getNameAsString() const {
+  return "full-text:strip-diacritics";
+}
 // </StripDiacriticsIterator>
 
 #endif
@@ -358,6 +398,10 @@
 void ThesaurusLookupIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring ThesaurusLookupIterator::getNameAsString() const {
+  return "full-text:thesaurus-lookup";
+}
 // </ThesaurusLookupIterator>
 
 #endif
@@ -395,6 +439,10 @@
 void TokenizeNodeIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring TokenizeNodeIterator::getNameAsString() const {
+  return "full-text:tokenize-node";
+}
 // </TokenizeNodeIterator>
 
 #endif
@@ -432,6 +480,10 @@
 void TokenizeNodesIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring TokenizeNodesIterator::getNameAsString() const {
+  return "full-text:tokenize-nodes";
+}
 // </TokenizeNodesIterator>
 
 #endif
@@ -461,6 +513,10 @@
 
 TokenizerPropertiesIterator::~TokenizerPropertiesIterator() {}
 
+
+zstring TokenizerPropertiesIterator::getNameAsString() const {
+  return "full-text:tokenizer-properties";
+}
 // </TokenizerPropertiesIterator>
 
 #endif
@@ -498,6 +554,10 @@
 void TokenizeStringIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring TokenizeStringIterator::getNameAsString() const {
+  return "full-text:tokenize-string";
+}
 // </TokenizeStringIterator>
 
 #endif

=== modified file 'src/runtime/full_text/pregenerated/ft_module.h'
--- src/runtime/full_text/pregenerated/ft_module.h	2014-01-31 01:39:38 +0000
+++ src/runtime/full_text/pregenerated/ft_module.h	2014-02-24 23:33:07 +0000
@@ -66,6 +66,8 @@
 
   virtual ~CurrentCompareOptionsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -98,6 +100,8 @@
 
   virtual ~CurrentLangIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -130,6 +134,8 @@
 
   virtual ~HostLangIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -162,6 +168,8 @@
 
   virtual ~IsStemLangSupportedIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -194,6 +202,8 @@
 
   virtual ~IsStopWordIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -226,6 +236,8 @@
 
   virtual ~IsStopWordLangSupportedIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -258,6 +270,8 @@
 
   virtual ~IsThesaurusLangSupportedIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -290,6 +304,8 @@
 
   virtual ~IsTokenizerLangSupportedIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -322,6 +338,8 @@
 
   virtual ~StemIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -354,6 +372,8 @@
 
   virtual ~StripDiacriticsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -403,6 +423,8 @@
 
   virtual ~ThesaurusLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -450,6 +472,8 @@
 
   virtual ~TokenizeNodeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -504,6 +528,8 @@
 
   virtual ~TokenizeNodesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -538,6 +564,8 @@
 
   virtual ~TokenizerPropertiesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -582,6 +610,8 @@
 
   virtual ~TokenizeStringIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/hof/dynamic_fncall_iterator.cpp'
--- src/runtime/hof/dynamic_fncall_iterator.cpp	2013-08-16 13:00:06 +0000
+++ src/runtime/hof/dynamic_fncall_iterator.cpp	2014-02-24 23:33:07 +0000
@@ -48,8 +48,10 @@
 NOARY_ACCEPT(ArgumentPlaceholderIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(SingleDynamicFnCallIterator)
+DEF_GET_NAME_AS_STRING(SingleDynamicFnCallIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(MultiDynamicFnCallIterator)
+DEF_GET_NAME_AS_STRING(MultiDynamicFnCallIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/hof/dynamic_fncall_iterator.h'
--- src/runtime/hof/dynamic_fncall_iterator.h	2013-08-16 13:00:06 +0000
+++ src/runtime/hof/dynamic_fncall_iterator.h	2014-02-24 23:33:07 +0000
@@ -121,6 +121,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -186,6 +188,8 @@
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
+  zstring getNameAsString() const;
+
   void resetImpl(PlanState& planState) const;
 };
 

=== modified file 'src/runtime/hof/function_item_iter.cpp'
--- src/runtime/hof/function_item_iter.cpp	2013-10-10 03:54:10 +0000
+++ src/runtime/hof/function_item_iter.cpp	2014-02-24 23:33:07 +0000
@@ -33,6 +33,7 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(FunctionItemIterator)
+DEF_GET_NAME_AS_STRING(FunctionItemIterator)
 
 /*******************************************************************************
 

=== modified file 'src/runtime/hof/function_item_iter.h'
--- src/runtime/hof/function_item_iter.h	2013-04-24 01:35:58 +0000
+++ src/runtime/hof/function_item_iter.h	2014-02-24 23:33:07 +0000
@@ -59,6 +59,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/hof/pregenerated/fn_hof_functions.cpp'
--- src/runtime/hof/pregenerated/fn_hof_functions.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/hof/pregenerated/fn_hof_functions.cpp	2014-02-24 23:33:07 +0000
@@ -62,6 +62,10 @@
 
 FunctionLookupIterator::~FunctionLookupIterator() {}
 
+
+zstring FunctionLookupIterator::getNameAsString() const {
+  return "fn:function-lookup";
+}
 // </FunctionLookupIterator>
 
 
@@ -90,6 +94,10 @@
 
 FunctionNameIterator::~FunctionNameIterator() {}
 
+
+zstring FunctionNameIterator::getNameAsString() const {
+  return "fn:function-name";
+}
 // </FunctionNameIterator>
 
 
@@ -118,6 +126,10 @@
 
 FunctionArityIterator::~FunctionArityIterator() {}
 
+
+zstring FunctionArityIterator::getNameAsString() const {
+  return "fn:function-arity";
+}
 // </FunctionArityIterator>
 
 
@@ -148,6 +160,10 @@
 
 FnForEachPairIteratorState::FnForEachPairIteratorState() {}
 
+
+zstring FnForEachPairIterator::getNameAsString() const {
+  return "fn:for-each-pair";
+}
 // </FnForEachPairIterator>
 
 
@@ -180,6 +196,10 @@
 
 FnFoldLeftIteratorState::FnFoldLeftIteratorState() {}
 
+
+zstring FnFoldLeftIterator::getNameAsString() const {
+  return "fn:fold-left";
+}
 // </FnFoldLeftIterator>
 
 

=== modified file 'src/runtime/hof/pregenerated/fn_hof_functions.h'
--- src/runtime/hof/pregenerated/fn_hof_functions.h	2014-01-31 01:39:38 +0000
+++ src/runtime/hof/pregenerated/fn_hof_functions.h	2014-02-24 23:33:07 +0000
@@ -64,6 +64,8 @@
 
   virtual ~FunctionLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -96,6 +98,8 @@
 
   virtual ~FunctionNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -128,6 +132,8 @@
 
   virtual ~FunctionArityIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -177,6 +183,8 @@
 
   virtual ~FnForEachPairIterator();
 
+  zstring getNameAsString() const;
+
   uint32_t getStateSizeOfSubtree() const;
 
   void accept(PlanIterVisitor& v) const;
@@ -234,6 +242,8 @@
 
   virtual ~FnFoldLeftIterator();
 
+  zstring getNameAsString() const;
+
   uint32_t getStateSizeOfSubtree() const;
 
   void accept(PlanIterVisitor& v) const;

=== modified file 'src/runtime/indexing/index_ddl.cpp'
--- src/runtime/indexing/index_ddl.cpp	2013-06-13 20:06:14 +0000
+++ src/runtime/indexing/index_ddl.cpp	2014-02-24 23:33:07 +0000
@@ -49,24 +49,34 @@
 
 
 SERIALIZABLE_CLASS_VERSIONS(CreateInternalIndexIterator)
+DEF_GET_NAME_AS_STRING(CreateInternalIndexIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CreateIndexIterator)
+DEF_GET_NAME_AS_STRING(CreateIndexIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(DeleteIndexIterator)
+DEF_GET_NAME_AS_STRING(DeleteIndexIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(RefreshIndexIterator)
+DEF_GET_NAME_AS_STRING(RefreshIndexIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ValueIndexEntryBuilderIterator)
+DEF_GET_NAME_AS_STRING(ValueIndexEntryBuilderIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(GeneralIndexEntryBuilderIterator)
+DEF_GET_NAME_AS_STRING(GeneralIndexEntryBuilderIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ProbeIndexPointValueIterator)
+DEF_GET_NAME_AS_STRING(ProbeIndexPointValueIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ProbeIndexPointGeneralIterator)
+DEF_GET_NAME_AS_STRING(ProbeIndexPointGeneralIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ProbeIndexRangeValueIterator)
+DEF_GET_NAME_AS_STRING(ProbeIndexRangeValueIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ProbeIndexRangeGeneralIterator)
+DEF_GET_NAME_AS_STRING(ProbeIndexRangeGeneralIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/indexing/index_ddl.h'
--- src/runtime/indexing/index_ddl.h	2013-03-24 20:40:03 +0000
+++ src/runtime/indexing/index_ddl.h	2014-02-24 23:33:07 +0000
@@ -85,6 +85,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -146,6 +148,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -187,6 +191,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -226,6 +232,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -278,6 +286,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -307,6 +317,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -369,6 +381,8 @@
 
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
+  zstring getNameAsString() const;
+
   bool count(store::Item_t& result, PlanState& planState) const;
 
 protected:
@@ -426,6 +440,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
 protected:
@@ -509,6 +525,8 @@
 
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 
+  zstring getNameAsString() const;
+
   bool count(store::Item_t& result, PlanState& planState) const;
 
 protected:
@@ -587,6 +605,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
 private:

=== modified file 'src/runtime/indexing/pregenerated/ic_ddl.cpp'
--- src/runtime/indexing/pregenerated/ic_ddl.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/indexing/pregenerated/ic_ddl.cpp	2014-02-24 23:33:07 +0000
@@ -55,6 +55,10 @@
 
 ActivateICIterator::~ActivateICIterator() {}
 
+
+zstring ActivateICIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:activate";
+}
 // </ActivateICIterator>
 
 
@@ -79,6 +83,10 @@
 
 DeactivateICIterator::~DeactivateICIterator() {}
 
+
+zstring DeactivateICIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-ddl:deactivate";
+}
 // </DeactivateICIterator>
 
 
@@ -103,6 +111,10 @@
 
 CheckICIterator::~CheckICIterator() {}
 
+
+zstring CheckICIterator::getNameAsString() const {
+  return "zorba-store-static-integrity-constraints-dml:check-integrity-constraint";
+}
 // </CheckICIterator>
 
 

=== modified file 'src/runtime/indexing/pregenerated/ic_ddl.h'
--- src/runtime/indexing/pregenerated/ic_ddl.h	2014-01-31 01:39:38 +0000
+++ src/runtime/indexing/pregenerated/ic_ddl.h	2014-02-24 23:33:07 +0000
@@ -66,6 +66,8 @@
 
   virtual ~ActivateICIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -104,6 +106,8 @@
 
   virtual ~DeactivateICIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -141,6 +145,8 @@
 
   virtual ~CheckICIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/indexing/pregenerated/index_func.cpp'
--- src/runtime/indexing/pregenerated/index_func.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/indexing/pregenerated/index_func.cpp	2014-02-24 23:33:07 +0000
@@ -73,6 +73,10 @@
 void IndexKeysIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring IndexKeysIterator::getNameAsString() const {
+  return "zorba-store-indexes-static-dml:keys";
+}
 // </IndexKeysIterator>
 
 

=== modified file 'src/runtime/indexing/pregenerated/index_func.h'
--- src/runtime/indexing/pregenerated/index_func.h	2014-01-31 01:39:38 +0000
+++ src/runtime/indexing/pregenerated/index_func.h	2014-02-24 23:33:07 +0000
@@ -78,6 +78,8 @@
 
   virtual ~IndexKeysIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/item/pregenerated/item.cpp'
--- src/runtime/item/pregenerated/item.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/item/pregenerated/item.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 MemSizeIterator::~MemSizeIterator() {}
 
+
+zstring MemSizeIterator::getNameAsString() const {
+  return "fn-zorba-item:size";
+}
 // </MemSizeIterator>
 
 

=== modified file 'src/runtime/item/pregenerated/item.h'
--- src/runtime/item/pregenerated/item.h	2014-01-31 01:39:38 +0000
+++ src/runtime/item/pregenerated/item.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~MemSizeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/json/json_constructors.cpp'
--- src/runtime/json/json_constructors.cpp	2013-06-15 02:57:08 +0000
+++ src/runtime/json/json_constructors.cpp	2014-02-24 23:33:07 +0000
@@ -33,10 +33,13 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(JSONObjectIterator)
+DEF_GET_NAME_AS_STRING(JSONObjectIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(JSONArrayIterator)
+DEF_GET_NAME_AS_STRING(JSONArrayIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(JSONDirectObjectIterator)
+DEF_GET_NAME_AS_STRING(JSONDirectObjectIterator)
 
 
 /*********************************************************************************

=== modified file 'src/runtime/json/json_constructors.h'
--- src/runtime/json/json_constructors.h	2013-06-15 02:57:08 +0000
+++ src/runtime/json/json_constructors.h	2014-02-24 23:33:07 +0000
@@ -72,6 +72,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -123,6 +125,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -156,10 +160,13 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
 
-}
+} // namespace zorba
 
-#endif
+#endif /* ZORBA_RUNTIME_JSON_CONSTRUCTORS */
+/* vim:set et sw=2 ts=2: */

=== modified file 'src/runtime/json/pregenerated/json.cpp'
--- src/runtime/json/pregenerated/json.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/json/pregenerated/json.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 JSONtoXMLInternal::~JSONtoXMLInternal() {}
 
+
+zstring JSONtoXMLInternal::getNameAsString() const {
+  return "fn-zorba-json:json-to-xml-internal";
+}
 // </JSONtoXMLInternal>
 
 
@@ -86,6 +90,10 @@
 
 XMLtoJSONInternal::~XMLtoJSONInternal() {}
 
+
+zstring XMLtoJSONInternal::getNameAsString() const {
+  return "fn-zorba-json:xml-to-json-internal";
+}
 // </XMLtoJSONInternal>
 
 

=== modified file 'src/runtime/json/pregenerated/json.h'
--- src/runtime/json/pregenerated/json.h	2014-01-31 01:39:38 +0000
+++ src/runtime/json/pregenerated/json.h	2014-02-24 23:33:07 +0000
@@ -60,6 +60,8 @@
 
   virtual ~JSONtoXMLInternal();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -92,6 +94,8 @@
 
   virtual ~XMLtoJSONInternal();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/json/pregenerated/jsoniq_functions.cpp'
--- src/runtime/json/pregenerated/jsoniq_functions.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/json/pregenerated/jsoniq_functions.cpp	2014-02-24 23:33:07 +0000
@@ -70,6 +70,10 @@
 void JSONDecodeFromRoundtripIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring JSONDecodeFromRoundtripIterator::getNameAsString() const {
+  return "fn-jsoniq:decode-from-roundtrip";
+}
 // </JSONDecodeFromRoundtripIterator>
 
 
@@ -110,6 +114,10 @@
 void JSONEncodeForRoundtripIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring JSONEncodeForRoundtripIterator::getNameAsString() const {
+  return "fn-jsoniq:encode-for-roundtrip";
+}
 // </JSONEncodeForRoundtripIterator>
 
 
@@ -142,6 +150,10 @@
 
 JSONParseIteratorState::JSONParseIteratorState() {}
 
+
+zstring JSONParseIterator::getNameAsString() const {
+  return "fn-jsoniq:parse-json";
+}
 // </JSONParseIterator>
 
 
@@ -170,6 +182,10 @@
 
 MultiObjectKeysIteratorState::~MultiObjectKeysIteratorState() {}
 
+
+zstring MultiObjectKeysIterator::getNameAsString() const {
+  return "fn-jsoniq:keys";
+}
 // </MultiObjectKeysIterator>
 
 
@@ -206,6 +222,10 @@
 void SingleObjectKeysIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SingleObjectKeysIterator::getNameAsString() const {
+  return "op-zorba:keys";
+}
 // </SingleObjectKeysIterator>
 
 
@@ -243,6 +263,10 @@
 void MultiObjectLookupIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring MultiObjectLookupIterator::getNameAsString() const {
+  return "op-zorba:multi-object-lookup";
+}
 // </MultiObjectLookupIterator>
 
 
@@ -268,6 +292,10 @@
 
 SingleObjectLookupIterator::~SingleObjectLookupIterator() {}
 
+
+zstring SingleObjectLookupIterator::getNameAsString() const {
+  return "op-zorba:single-object-lookup";
+}
 // </SingleObjectLookupIterator>
 
 
@@ -305,6 +333,10 @@
 void JSONObjectProjectIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring JSONObjectProjectIterator::getNameAsString() const {
+  return "fn-jsoniq:project";
+}
 // </JSONObjectProjectIterator>
 
 
@@ -342,6 +374,10 @@
 void JSONObjectTrimIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring JSONObjectTrimIterator::getNameAsString() const {
+  return "fn-jsoniq:trim";
+}
 // </JSONObjectTrimIterator>
 
 
@@ -378,6 +414,10 @@
 void MultiArrayMembersIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring MultiArrayMembersIterator::getNameAsString() const {
+  return "fn-jsoniq:members";
+}
 // </MultiArrayMembersIterator>
 
 
@@ -414,6 +454,10 @@
 void SingleArrayMembersIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SingleArrayMembersIterator::getNameAsString() const {
+  return "op-zorba:members";
+}
 // </SingleArrayMembersIterator>
 
 
@@ -451,6 +495,10 @@
 void MultiArrayLookupIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring MultiArrayLookupIterator::getNameAsString() const {
+  return "op-zorba:multi-array-lookup";
+}
 // </MultiArrayLookupIterator>
 
 
@@ -476,6 +524,10 @@
 
 SingleArrayLookupIterator::~SingleArrayLookupIterator() {}
 
+
+zstring SingleArrayLookupIterator::getNameAsString() const {
+  return "op-zorba:single-array-lookup";
+}
 // </SingleArrayLookupIterator>
 
 
@@ -500,6 +552,10 @@
 
 JSONArraySizeIterator::~JSONArraySizeIterator() {}
 
+
+zstring JSONArraySizeIterator::getNameAsString() const {
+  return "fn-jsoniq:size";
+}
 // </JSONArraySizeIterator>
 
 
@@ -532,6 +588,10 @@
 void JSONArrayFlattenIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring JSONArrayFlattenIterator::getNameAsString() const {
+  return "fn-jsoniq:flatten";
+}
 // </JSONArrayFlattenIterator>
 
 
@@ -556,6 +616,10 @@
 
 JSONNullIterator::~JSONNullIterator() {}
 
+
+zstring JSONNullIterator::getNameAsString() const {
+  return "fn-jsoniq:null";
+}
 // </JSONNullIterator>
 
 
@@ -584,6 +648,10 @@
 
 JSONObjectInsertIterator::~JSONObjectInsertIterator() {}
 
+
+zstring JSONObjectInsertIterator::getNameAsString() const {
+  return "op-zorba:json-object-insert";
+}
 // </JSONObjectInsertIterator>
 
 
@@ -612,6 +680,10 @@
 
 JSONArrayInsertIterator::~JSONArrayInsertIterator() {}
 
+
+zstring JSONArrayInsertIterator::getNameAsString() const {
+  return "op-zorba:json-array-insert";
+}
 // </JSONArrayInsertIterator>
 
 
@@ -637,6 +709,10 @@
 
 JSONDeleteIterator::~JSONDeleteIterator() {}
 
+
+zstring JSONDeleteIterator::getNameAsString() const {
+  return "op-zorba:json-delete";
+}
 // </JSONDeleteIterator>
 
 
@@ -667,6 +743,10 @@
 
 JSONReplaceValueIterator::~JSONReplaceValueIterator() {}
 
+
+zstring JSONReplaceValueIterator::getNameAsString() const {
+  return "op-zorba:json-replace-value";
+}
 // </JSONReplaceValueIterator>
 
 
@@ -695,6 +775,10 @@
 
 JSONRenameIterator::~JSONRenameIterator() {}
 
+
+zstring JSONRenameIterator::getNameAsString() const {
+  return "op-zorba:json-rename";
+}
 // </JSONRenameIterator>
 
 
@@ -723,6 +807,10 @@
 
 JSONArrayAppendIterator::~JSONArrayAppendIterator() {}
 
+
+zstring JSONArrayAppendIterator::getNameAsString() const {
+  return "op-zorba:json-array-append";
+}
 // </JSONArrayAppendIterator>
 
 
@@ -747,6 +835,10 @@
 
 JSONBoxIterator::~JSONBoxIterator() {}
 
+
+zstring JSONBoxIterator::getNameAsString() const {
+  return "op-zorba:json-box";
+}
 // </JSONBoxIterator>
 
 

=== modified file 'src/runtime/json/pregenerated/jsoniq_functions.h'
--- src/runtime/json/pregenerated/jsoniq_functions.h	2014-01-31 01:39:38 +0000
+++ src/runtime/json/pregenerated/jsoniq_functions.h	2014-02-24 23:33:07 +0000
@@ -75,6 +75,8 @@
 
   virtual ~JSONDecodeFromRoundtripIterator();
 
+  zstring getNameAsString() const;
+
 public:
   static void extractChildOfKind(const store::Item_t& aParent, const store::NodeKind& aKind, store::Item_t& aChild);
   bool decodeNode(const store::Item_t& aSerializedNode, const store::NodeKind& aKind, store::Item_t& aResult) const;
@@ -127,6 +129,8 @@
 
   virtual ~JSONEncodeForRoundtripIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool encodeObject(const store::Item_t& anObj, store::Item_t& aResult, JSONEncodeForRoundtripIteratorState* aState) const;
   bool encodeArray(const store::Item_t& anArray, store::Item_t& aResult, JSONEncodeForRoundtripIteratorState* aState) const;
@@ -184,6 +188,8 @@
 
   virtual ~JSONParseIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool processBooleanOption(const store::Item_t& options, char const* option_name, bool* option_value) const;
   void accept(PlanIterVisitor& v) const;
@@ -231,6 +237,8 @@
 
   virtual ~MultiObjectKeysIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -274,6 +282,8 @@
 
   virtual ~SingleObjectKeysIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool count(store::Item_t& result, PlanState& planState) const;
   void accept(PlanIterVisitor& v) const;
@@ -319,6 +329,8 @@
 
   virtual ~MultiObjectLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -349,6 +361,8 @@
 
   virtual ~SingleObjectLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -392,6 +406,8 @@
 
   virtual ~JSONObjectProjectIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -435,6 +451,8 @@
 
   virtual ~JSONObjectTrimIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -478,6 +496,8 @@
 
   virtual ~MultiArrayMembersIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool count(store::Item_t& result, PlanState& planState) const;
   void accept(PlanIterVisitor& v) const;
@@ -523,6 +543,8 @@
 
   virtual ~SingleArrayMembersIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool count(store::Item_t& result, PlanState& planState) const;
   void accept(PlanIterVisitor& v) const;
@@ -568,6 +590,8 @@
 
   virtual ~MultiArrayLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -598,6 +622,8 @@
 
   virtual ~SingleArrayLookupIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -628,6 +654,8 @@
 
   virtual ~JSONArraySizeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -673,6 +701,8 @@
 
   virtual ~JSONArrayFlattenIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -702,6 +732,8 @@
 
   virtual ~JSONNullIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -734,6 +766,8 @@
 
   virtual ~JSONObjectInsertIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -766,6 +800,8 @@
 
   virtual ~JSONArrayInsertIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -798,6 +834,8 @@
 
   virtual ~JSONDeleteIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -831,6 +869,8 @@
 
   virtual ~JSONReplaceValueIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -863,6 +903,8 @@
 
   virtual ~JSONRenameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -895,6 +937,8 @@
 
   virtual ~JSONArrayAppendIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -927,6 +971,8 @@
 
   virtual ~JSONBoxIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/jsound/pregenerated/jsound.cpp'
--- src/runtime/jsound/pregenerated/jsound.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/jsound/pregenerated/jsound.cpp	2014-02-24 23:33:07 +0000
@@ -59,6 +59,10 @@
 
 JSoundAnnotateIterator::~JSoundAnnotateIterator() {}
 
+
+zstring JSoundAnnotateIterator::getNameAsString() const {
+  return "fn-zorba-jsound:annotate";
+}
 // </JSoundAnnotateIterator>
 
 
@@ -87,6 +91,10 @@
 
 JSoundValidateIterator::~JSoundValidateIterator() {}
 
+
+zstring JSoundValidateIterator::getNameAsString() const {
+  return "fn-zorba-jsound:validate";
+}
 // </JSoundValidateIterator>
 
 

=== modified file 'src/runtime/jsound/pregenerated/jsound.h'
--- src/runtime/jsound/pregenerated/jsound.h	2014-01-31 01:39:38 +0000
+++ src/runtime/jsound/pregenerated/jsound.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~JSoundAnnotateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~JSoundValidateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/maths/pregenerated/maths.cpp'
--- src/runtime/maths/pregenerated/maths.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/maths/pregenerated/maths.cpp	2014-02-24 23:33:07 +0000
@@ -54,6 +54,10 @@
 
 SqrtIterator::~SqrtIterator() {}
 
+
+zstring SqrtIterator::getNameAsString() const {
+  return "math:sqrt";
+}
 // </SqrtIterator>
 
 
@@ -78,6 +82,10 @@
 
 ExpIterator::~ExpIterator() {}
 
+
+zstring ExpIterator::getNameAsString() const {
+  return "math:exp";
+}
 // </ExpIterator>
 
 
@@ -102,6 +110,10 @@
 
 Exp10Iterator::~Exp10Iterator() {}
 
+
+zstring Exp10Iterator::getNameAsString() const {
+  return "math:exp10";
+}
 // </Exp10Iterator>
 
 
@@ -126,6 +138,10 @@
 
 LogIterator::~LogIterator() {}
 
+
+zstring LogIterator::getNameAsString() const {
+  return "math:log";
+}
 // </LogIterator>
 
 
@@ -150,6 +166,10 @@
 
 Log10Iterator::~Log10Iterator() {}
 
+
+zstring Log10Iterator::getNameAsString() const {
+  return "math:log10";
+}
 // </Log10Iterator>
 
 
@@ -174,6 +194,10 @@
 
 SinIterator::~SinIterator() {}
 
+
+zstring SinIterator::getNameAsString() const {
+  return "math:sin";
+}
 // </SinIterator>
 
 
@@ -198,6 +222,10 @@
 
 CosIterator::~CosIterator() {}
 
+
+zstring CosIterator::getNameAsString() const {
+  return "math:cos";
+}
 // </CosIterator>
 
 
@@ -222,6 +250,10 @@
 
 TanIterator::~TanIterator() {}
 
+
+zstring TanIterator::getNameAsString() const {
+  return "math:tan";
+}
 // </TanIterator>
 
 
@@ -246,6 +278,10 @@
 
 ArcSinIterator::~ArcSinIterator() {}
 
+
+zstring ArcSinIterator::getNameAsString() const {
+  return "math:asin";
+}
 // </ArcSinIterator>
 
 
@@ -270,6 +306,10 @@
 
 ArcCosIterator::~ArcCosIterator() {}
 
+
+zstring ArcCosIterator::getNameAsString() const {
+  return "math:acos";
+}
 // </ArcCosIterator>
 
 
@@ -294,6 +334,10 @@
 
 ArcTanIterator::~ArcTanIterator() {}
 
+
+zstring ArcTanIterator::getNameAsString() const {
+  return "math:atan";
+}
 // </ArcTanIterator>
 
 
@@ -319,6 +363,10 @@
 
 Atan2Iterator::~Atan2Iterator() {}
 
+
+zstring Atan2Iterator::getNameAsString() const {
+  return "math:atan2";
+}
 // </Atan2Iterator>
 
 
@@ -343,6 +391,10 @@
 
 CoshIterator::~CoshIterator() {}
 
+
+zstring CoshIterator::getNameAsString() const {
+  return "fn-zorba-math:cosh";
+}
 // </CoshIterator>
 
 
@@ -367,6 +419,10 @@
 
 AcoshIterator::~AcoshIterator() {}
 
+
+zstring AcoshIterator::getNameAsString() const {
+  return "fn-zorba-math:acosh";
+}
 // </AcoshIterator>
 
 
@@ -392,6 +448,10 @@
 
 FmodIterator::~FmodIterator() {}
 
+
+zstring FmodIterator::getNameAsString() const {
+  return "fn-zorba-math:fmod";
+}
 // </FmodIterator>
 
 
@@ -417,6 +477,10 @@
 
 LdexpIterator::~LdexpIterator() {}
 
+
+zstring LdexpIterator::getNameAsString() const {
+  return "fn-zorba-math:ldexp";
+}
 // </LdexpIterator>
 
 
@@ -442,6 +506,10 @@
 
 PowIterator::~PowIterator() {}
 
+
+zstring PowIterator::getNameAsString() const {
+  return "math:pow";
+}
 // </PowIterator>
 
 
@@ -466,6 +534,10 @@
 
 SinhIterator::~SinhIterator() {}
 
+
+zstring SinhIterator::getNameAsString() const {
+  return "fn-zorba-math:sinh";
+}
 // </SinhIterator>
 
 
@@ -490,6 +562,10 @@
 
 AsinhIterator::~AsinhIterator() {}
 
+
+zstring AsinhIterator::getNameAsString() const {
+  return "fn-zorba-math:asinh";
+}
 // </AsinhIterator>
 
 
@@ -514,6 +590,10 @@
 
 TanhIterator::~TanhIterator() {}
 
+
+zstring TanhIterator::getNameAsString() const {
+  return "fn-zorba-math:tanh";
+}
 // </TanhIterator>
 
 
@@ -538,6 +618,10 @@
 
 AtanhIterator::~AtanhIterator() {}
 
+
+zstring AtanhIterator::getNameAsString() const {
+  return "fn-zorba-math:atanh";
+}
 // </AtanhIterator>
 
 
@@ -562,6 +646,10 @@
 
 PiNumberIterator::~PiNumberIterator() {}
 
+
+zstring PiNumberIterator::getNameAsString() const {
+  return "math:pi";
+}
 // </PiNumberIterator>
 
 
@@ -586,6 +674,10 @@
 
 IsInfIterator::~IsInfIterator() {}
 
+
+zstring IsInfIterator::getNameAsString() const {
+  return "fn-zorba-math:is_inf";
+}
 // </IsInfIterator>
 
 
@@ -610,6 +702,10 @@
 
 IsNaNIterator::~IsNaNIterator() {}
 
+
+zstring IsNaNIterator::getNameAsString() const {
+  return "fn-zorba-math:is_nan";
+}
 // </IsNaNIterator>
 
 
@@ -648,6 +744,10 @@
   PlanIteratorState::reset(planState);
   theDoubInteger = numeric_consts<xs_double>::zero();
 }
+
+zstring ModfIterator::getNameAsString() const {
+  return "fn-zorba-math:modf";
+}
 // </ModfIterator>
 
 
@@ -686,6 +786,10 @@
   PlanIteratorState::reset(planState);
   theIntExponent = numeric_consts<xs_integer>::zero();
 }
+
+zstring FrexpIterator::getNameAsString() const {
+  return "fn-zorba-math:frexp";
+}
 // </FrexpIterator>
 
 

=== modified file 'src/runtime/maths/pregenerated/maths.h'
--- src/runtime/maths/pregenerated/maths.h	2014-01-31 01:39:38 +0000
+++ src/runtime/maths/pregenerated/maths.h	2014-02-24 23:33:07 +0000
@@ -60,6 +60,8 @@
 
   virtual ~SqrtIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -90,6 +92,8 @@
 
   virtual ~ExpIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -120,6 +124,8 @@
 
   virtual ~Exp10Iterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -150,6 +156,8 @@
 
   virtual ~LogIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -180,6 +188,8 @@
 
   virtual ~Log10Iterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -210,6 +220,8 @@
 
   virtual ~SinIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -240,6 +252,8 @@
 
   virtual ~CosIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -270,6 +284,8 @@
 
   virtual ~TanIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -300,6 +316,8 @@
 
   virtual ~ArcSinIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -330,6 +348,8 @@
 
   virtual ~ArcCosIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -360,6 +380,8 @@
 
   virtual ~ArcTanIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -390,6 +412,8 @@
 
   virtual ~Atan2Iterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -420,6 +444,8 @@
 
   virtual ~CoshIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -450,6 +476,8 @@
 
   virtual ~AcoshIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -480,6 +508,8 @@
 
   virtual ~FmodIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -510,6 +540,8 @@
 
   virtual ~LdexpIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -540,6 +572,8 @@
 
   virtual ~PowIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -570,6 +604,8 @@
 
   virtual ~SinhIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -600,6 +636,8 @@
 
   virtual ~AsinhIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -630,6 +668,8 @@
 
   virtual ~TanhIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -660,6 +700,8 @@
 
   virtual ~AtanhIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -689,6 +731,8 @@
 
   virtual ~PiNumberIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -719,6 +763,8 @@
 
   virtual ~IsInfIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -749,6 +795,8 @@
 
   virtual ~IsNaNIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -792,6 +840,8 @@
 
   virtual ~ModfIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -835,6 +885,8 @@
 
   virtual ~FrexpIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/misc/materialize.cpp'
--- src/runtime/misc/materialize.cpp	2013-03-05 00:45:43 +0000
+++ src/runtime/misc/materialize.cpp	2014-02-24 23:33:07 +0000
@@ -30,6 +30,7 @@
 
 
 SERIALIZABLE_CLASS_VERSIONS(MaterializeIterator)
+DEF_GET_NAME_AS_STRING(MaterializeIterator)
 
 
 MaterializeIteratorState::MaterializeIteratorState()

=== modified file 'src/runtime/misc/materialize.h'
--- src/runtime/misc/materialize.h	2013-03-05 00:45:43 +0000
+++ src/runtime/misc/materialize.h	2014-02-24 23:33:07 +0000
@@ -74,6 +74,8 @@
 
   void openImpl(PlanState& planState, uint32_t& offset);
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/nodes/pregenerated/node_position.cpp'
--- src/runtime/nodes/pregenerated/node_position.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/nodes/pregenerated/node_position.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 NodePositionIterator::~NodePositionIterator() {}
 
+
+zstring NodePositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:node-position";
+}
 // </NodePositionIterator>
 
 
@@ -86,6 +90,10 @@
 
 IsAncestorPositionIterator::~IsAncestorPositionIterator() {}
 
+
+zstring IsAncestorPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:ancestor-of";
+}
 // </IsAncestorPositionIterator>
 
 
@@ -114,6 +122,10 @@
 
 IsFollowingSiblingPositionIterator::~IsFollowingSiblingPositionIterator() {}
 
+
+zstring IsFollowingSiblingPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:following-sibling-of";
+}
 // </IsFollowingSiblingPositionIterator>
 
 
@@ -142,6 +154,10 @@
 
 IsFollowingPositionIterator::~IsFollowingPositionIterator() {}
 
+
+zstring IsFollowingPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:following-of";
+}
 // </IsFollowingPositionIterator>
 
 
@@ -170,6 +186,10 @@
 
 IsInSubtreeOfPositionIterator::~IsInSubtreeOfPositionIterator() {}
 
+
+zstring IsInSubtreeOfPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:in-subtree-of";
+}
 // </IsInSubtreeOfPositionIterator>
 
 
@@ -198,6 +218,10 @@
 
 IsDescendantPositionIterator::~IsDescendantPositionIterator() {}
 
+
+zstring IsDescendantPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:descendant-of";
+}
 // </IsDescendantPositionIterator>
 
 
@@ -226,6 +250,10 @@
 
 IsPrecedingSiblingPositionIterator::~IsPrecedingSiblingPositionIterator() {}
 
+
+zstring IsPrecedingSiblingPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:preceding-sibling-of";
+}
 // </IsPrecedingSiblingPositionIterator>
 
 
@@ -254,6 +282,10 @@
 
 IsPrecedingPositionIterator::~IsPrecedingPositionIterator() {}
 
+
+zstring IsPrecedingPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:preceding-of";
+}
 // </IsPrecedingPositionIterator>
 
 
@@ -282,6 +314,10 @@
 
 IsChildPositionIterator::~IsChildPositionIterator() {}
 
+
+zstring IsChildPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:child-of";
+}
 // </IsChildPositionIterator>
 
 
@@ -310,6 +346,10 @@
 
 IsAttributeOfPositionIterator::~IsAttributeOfPositionIterator() {}
 
+
+zstring IsAttributeOfPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:attribute-of";
+}
 // </IsAttributeOfPositionIterator>
 
 
@@ -338,6 +378,10 @@
 
 IsParentPositionIterator::~IsParentPositionIterator() {}
 
+
+zstring IsParentPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:parent-of";
+}
 // </IsParentPositionIterator>
 
 
@@ -366,6 +410,10 @@
 
 IsPrecedingInDocumentOrderPositionIterator::~IsPrecedingInDocumentOrderPositionIterator() {}
 
+
+zstring IsPrecedingInDocumentOrderPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:preceding-in-document-order-of";
+}
 // </IsPrecedingInDocumentOrderPositionIterator>
 
 
@@ -394,6 +442,10 @@
 
 IsFollowingInDocumentOrderPositionIterator::~IsFollowingInDocumentOrderPositionIterator() {}
 
+
+zstring IsFollowingInDocumentOrderPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:following-in-document-order-of";
+}
 // </IsFollowingInDocumentOrderPositionIterator>
 
 
@@ -422,6 +474,10 @@
 
 LevelPositionIterator::~LevelPositionIterator() {}
 
+
+zstring LevelPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:level";
+}
 // </LevelPositionIterator>
 
 
@@ -450,6 +506,10 @@
 
 IsAttributePositionIterator::~IsAttributePositionIterator() {}
 
+
+zstring IsAttributePositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-attribute";
+}
 // </IsAttributePositionIterator>
 
 
@@ -478,6 +538,10 @@
 
 IsCommentPositionIterator::~IsCommentPositionIterator() {}
 
+
+zstring IsCommentPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-comment";
+}
 // </IsCommentPositionIterator>
 
 
@@ -506,6 +570,10 @@
 
 IsDocumentPositionIterator::~IsDocumentPositionIterator() {}
 
+
+zstring IsDocumentPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-document";
+}
 // </IsDocumentPositionIterator>
 
 
@@ -534,6 +602,10 @@
 
 IsElementPositionIterator::~IsElementPositionIterator() {}
 
+
+zstring IsElementPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-element";
+}
 // </IsElementPositionIterator>
 
 
@@ -562,6 +634,10 @@
 
 IsProcessingInstructionPositionIterator::~IsProcessingInstructionPositionIterator() {}
 
+
+zstring IsProcessingInstructionPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-processing-instruction";
+}
 // </IsProcessingInstructionPositionIterator>
 
 
@@ -590,6 +666,10 @@
 
 IsTextPositionIterator::~IsTextPositionIterator() {}
 
+
+zstring IsTextPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:is-text";
+}
 // </IsTextPositionIterator>
 
 
@@ -618,6 +698,10 @@
 
 IsSiblingPositionIterator::~IsSiblingPositionIterator() {}
 
+
+zstring IsSiblingPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:sibling-of";
+}
 // </IsSiblingPositionIterator>
 
 
@@ -646,6 +730,10 @@
 
 InSameTreePositionIterator::~InSameTreePositionIterator() {}
 
+
+zstring InSameTreePositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:in-same-tree-of";
+}
 // </InSameTreePositionIterator>
 
 
@@ -674,6 +762,10 @@
 
 InCollectionPositionIterator::~InCollectionPositionIterator() {}
 
+
+zstring InCollectionPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:in-collection";
+}
 // </InCollectionPositionIterator>
 
 
@@ -702,6 +794,10 @@
 
 InSameCollectionPositionIterator::~InSameCollectionPositionIterator() {}
 
+
+zstring InSameCollectionPositionIterator::getNameAsString() const {
+  return "fn-zorba-pos:in-same-collection-of";
+}
 // </InSameCollectionPositionIterator>
 
 

=== modified file 'src/runtime/nodes/pregenerated/node_position.h'
--- src/runtime/nodes/pregenerated/node_position.h	2014-01-31 01:39:38 +0000
+++ src/runtime/nodes/pregenerated/node_position.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~NodePositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~IsAncestorPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -118,6 +122,8 @@
 
   virtual ~IsFollowingSiblingPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -148,6 +154,8 @@
 
   virtual ~IsFollowingPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -178,6 +186,8 @@
 
   virtual ~IsInSubtreeOfPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -208,6 +218,8 @@
 
   virtual ~IsDescendantPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -238,6 +250,8 @@
 
   virtual ~IsPrecedingSiblingPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -268,6 +282,8 @@
 
   virtual ~IsPrecedingPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -298,6 +314,8 @@
 
   virtual ~IsChildPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -328,6 +346,8 @@
 
   virtual ~IsAttributeOfPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -358,6 +378,8 @@
 
   virtual ~IsParentPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -388,6 +410,8 @@
 
   virtual ~IsPrecedingInDocumentOrderPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -418,6 +442,8 @@
 
   virtual ~IsFollowingInDocumentOrderPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -448,6 +474,8 @@
 
   virtual ~LevelPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -478,6 +506,8 @@
 
   virtual ~IsAttributePositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -508,6 +538,8 @@
 
   virtual ~IsCommentPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -538,6 +570,8 @@
 
   virtual ~IsDocumentPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -568,6 +602,8 @@
 
   virtual ~IsElementPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -598,6 +634,8 @@
 
   virtual ~IsProcessingInstructionPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -628,6 +666,8 @@
 
   virtual ~IsTextPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -658,6 +698,8 @@
 
   virtual ~IsSiblingPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -688,6 +730,8 @@
 
   virtual ~InSameTreePositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -718,6 +762,8 @@
 
   virtual ~InCollectionPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -748,6 +794,8 @@
 
   virtual ~InSameCollectionPositionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/nodes/pregenerated/nodes.cpp'
--- src/runtime/nodes/pregenerated/nodes.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/nodes/pregenerated/nodes.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 FnLocalNameIterator::~FnLocalNameIterator() {}
 
+
+zstring FnLocalNameIterator::getNameAsString() const {
+  return "fn:local-name";
+}
 // </FnLocalNameIterator>
 
 
@@ -86,6 +90,10 @@
 
 FnNamespaceUriIterator::~FnNamespaceUriIterator() {}
 
+
+zstring FnNamespaceUriIterator::getNameAsString() const {
+  return "fn:namespace-uri";
+}
 // </FnNamespaceUriIterator>
 
 
@@ -114,6 +122,10 @@
 
 FnLangIterator::~FnLangIterator() {}
 
+
+zstring FnLangIterator::getNameAsString() const {
+  return "fn:lang";
+}
 // </FnLangIterator>
 
 
@@ -142,6 +154,10 @@
 
 FnHasChildrenIterator::~FnHasChildrenIterator() {}
 
+
+zstring FnHasChildrenIterator::getNameAsString() const {
+  return "fn:has-children";
+}
 // </FnHasChildrenIterator>
 
 
@@ -182,6 +198,10 @@
 void FnInnermostIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring FnInnermostIterator::getNameAsString() const {
+  return "fn:innermost";
+}
 // </FnInnermostIterator>
 
 
@@ -222,6 +242,10 @@
 void FnOutermostIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring FnOutermostIterator::getNameAsString() const {
+  return "fn:outermost";
+}
 // </FnOutermostIterator>
 
 
@@ -250,6 +274,10 @@
 
 FnGenerateIdIterator::~FnGenerateIdIterator() {}
 
+
+zstring FnGenerateIdIterator::getNameAsString() const {
+  return "fn:generate-id";
+}
 // </FnGenerateIdIterator>
 
 
@@ -278,6 +306,10 @@
 
 IsAncestorIterator::~IsAncestorIterator() {}
 
+
+zstring IsAncestorIterator::getNameAsString() const {
+  return "fn-zorba-node:ancestor-of";
+}
 // </IsAncestorIterator>
 
 
@@ -306,6 +338,10 @@
 
 IsDescendantIterator::~IsDescendantIterator() {}
 
+
+zstring IsDescendantIterator::getNameAsString() const {
+  return "fn-zorba-node:descendant-of";
+}
 // </IsDescendantIterator>
 
 
@@ -334,6 +370,10 @@
 
 IsParentIterator::~IsParentIterator() {}
 
+
+zstring IsParentIterator::getNameAsString() const {
+  return "fn-zorba-node:parent-of";
+}
 // </IsParentIterator>
 
 
@@ -362,6 +402,10 @@
 
 IsChildIterator::~IsChildIterator() {}
 
+
+zstring IsChildIterator::getNameAsString() const {
+  return "fn-zorba-node:child-of";
+}
 // </IsChildIterator>
 
 
@@ -390,6 +434,10 @@
 
 IsFollowingIterator::~IsFollowingIterator() {}
 
+
+zstring IsFollowingIterator::getNameAsString() const {
+  return "fn-zorba-node:following-of";
+}
 // </IsFollowingIterator>
 
 
@@ -418,6 +466,10 @@
 
 IsPrecedingIterator::~IsPrecedingIterator() {}
 
+
+zstring IsPrecedingIterator::getNameAsString() const {
+  return "fn-zorba-node:preceding-of";
+}
 // </IsPrecedingIterator>
 
 
@@ -446,6 +498,10 @@
 
 IsFollowingSiblingIterator::~IsFollowingSiblingIterator() {}
 
+
+zstring IsFollowingSiblingIterator::getNameAsString() const {
+  return "fn-zorba-node:following-sibling-of";
+}
 // </IsFollowingSiblingIterator>
 
 
@@ -474,6 +530,10 @@
 
 IsPrecedingSiblingIterator::~IsPrecedingSiblingIterator() {}
 
+
+zstring IsPrecedingSiblingIterator::getNameAsString() const {
+  return "fn-zorba-node:preceding-sibling-of";
+}
 // </IsPrecedingSiblingIterator>
 
 
@@ -502,6 +562,10 @@
 
 LevelIterator::~LevelIterator() {}
 
+
+zstring LevelIterator::getNameAsString() const {
+  return "fn-zorba-node:level";
+}
 // </LevelIterator>
 
 
@@ -530,6 +594,10 @@
 
 LeastCommonAncestor::~LeastCommonAncestor() {}
 
+
+zstring LeastCommonAncestor::getNameAsString() const {
+  return "fn-zorba-node:least-common-ancestor";
+}
 // </LeastCommonAncestor>
 
 
@@ -558,6 +626,10 @@
 
 FnPathIterator::~FnPathIterator() {}
 
+
+zstring FnPathIterator::getNameAsString() const {
+  return "fn:path";
+}
 // </FnPathIterator>
 
 
@@ -586,6 +658,10 @@
 
 NodeCopyIterator::~NodeCopyIterator() {}
 
+
+zstring NodeCopyIterator::getNameAsString() const {
+  return "fn-zorba-node:copy";
+}
 // </NodeCopyIterator>
 
 

=== modified file 'src/runtime/nodes/pregenerated/nodes.h'
--- src/runtime/nodes/pregenerated/nodes.h	2014-01-31 01:39:38 +0000
+++ src/runtime/nodes/pregenerated/nodes.h	2014-02-24 23:33:07 +0000
@@ -60,6 +60,8 @@
 
   virtual ~FnLocalNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -92,6 +94,8 @@
 
   virtual ~FnNamespaceUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -124,6 +128,8 @@
 
   virtual ~FnLangIterator();
 
+  zstring getNameAsString() const;
+
 public:
   bool isLangAttr(const store::Item_t& aAttr) const;
   bool matchesReqLang(const store::Item_t& aLangAttr, const zstring& aRequestLang) const;
@@ -157,6 +163,8 @@
 
   virtual ~FnHasChildrenIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -201,6 +209,8 @@
 
   virtual ~FnInnermostIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -245,6 +255,8 @@
 
   virtual ~FnOutermostIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -275,6 +287,8 @@
 
   virtual ~FnGenerateIdIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -305,6 +319,8 @@
 
   virtual ~IsAncestorIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -335,6 +351,8 @@
 
   virtual ~IsDescendantIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -365,6 +383,8 @@
 
   virtual ~IsParentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -395,6 +415,8 @@
 
   virtual ~IsChildIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -425,6 +447,8 @@
 
   virtual ~IsFollowingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -455,6 +479,8 @@
 
   virtual ~IsPrecedingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -485,6 +511,8 @@
 
   virtual ~IsFollowingSiblingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -515,6 +543,8 @@
 
   virtual ~IsPrecedingSiblingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -545,6 +575,8 @@
 
   virtual ~LevelIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -575,6 +607,8 @@
 
   virtual ~LeastCommonAncestor();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -605,6 +639,8 @@
 
   virtual ~FnPathIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -635,6 +671,8 @@
 
   virtual ~NodeCopyIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/numerics/NumericsImpl.cpp'
--- src/runtime/numerics/NumericsImpl.cpp	2013-06-11 05:40:04 +0000
+++ src/runtime/numerics/NumericsImpl.cpp	2014-02-24 23:33:07 +0000
@@ -49,131 +49,185 @@
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<AddOperation>,
                                1)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<AddOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<SubtractOperation>,
                                2)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<SubtractOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<MultiplyOperation>,
                                3)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<MultiplyOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<DivideOperation>,
                                4)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<DivideOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<IntegerDivideOperation>,
                                5)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<IntegerDivideOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE(NumArithIterator,
                                NumArithIterator<ModOperation>,
                                6)
+template<>
+DEF_GET_NAME_AS_STRING(NumArithIterator<ModOperation>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<AddOperation, store::XS_DOUBLE>,
 1);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<AddOperation,store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<AddOperation, store::XS_FLOAT>,
 2);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<AddOperation,store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<AddOperation, store::XS_DECIMAL>,
 3);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<AddOperation,store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<AddOperation, store::XS_INTEGER>,
 4);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<AddOperation,store::XS_INTEGER>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<SubtractOperation, store::XS_DOUBLE>,
 5);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<SubtractOperation,store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<SubtractOperation, store::XS_FLOAT>,
 6);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<SubtractOperation,store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<SubtractOperation, store::XS_DECIMAL>,
 7);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<SubtractOperation,store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<SubtractOperation, store::XS_INTEGER>,
 8);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<SubtractOperation,store::XS_INTEGER>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<MultiplyOperation, store::XS_DOUBLE>,
 9);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<MultiplyOperation,store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<MultiplyOperation, store::XS_FLOAT>,
 10);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<MultiplyOperation,store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<MultiplyOperation, store::XS_DECIMAL>,
 11);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<MultiplyOperation,store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<MultiplyOperation, store::XS_INTEGER>,
 12);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<MultiplyOperation,store::XS_INTEGER>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<DivideOperation, store::XS_DOUBLE>,
 13);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<DivideOperation,store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<DivideOperation, store::XS_FLOAT>,
 14);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<DivideOperation,store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<DivideOperation, store::XS_DECIMAL>,
 15);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<DivideOperation,store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<DivideOperation, store::XS_INTEGER>,
 16);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<DivideOperation,store::XS_INTEGER>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<ModOperation, store::XS_DOUBLE>,
 17);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<ModOperation,store::XS_DOUBLE>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<ModOperation, store::XS_FLOAT>,
 18);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<ModOperation,store::XS_FLOAT>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<ModOperation, store::XS_DECIMAL>,
 19);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<ModOperation,store::XS_DECIMAL>)
 
 SERIALIZABLE_TEMPLATE_INSTANCE_2(
 SpecificNumArithIterator,
 SpecificNumArithIterator<ModOperation, store::XS_INTEGER>,
 20);
+template<>
+DEF_GET_NAME_AS_STRING(SpecificNumArithIterator<ModOperation,store::XS_INTEGER>)
 
 
 SERIALIZABLE_CLASS_VERSIONS(OpNumericUnaryIterator)
+DEF_GET_NAME_AS_STRING(OpNumericUnaryIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(OpDoubleUnaryIterator)
+DEF_GET_NAME_AS_STRING(OpDoubleUnaryIterator)
 
 
 /*******************************************************************************

=== modified file 'src/runtime/numerics/NumericsImpl.h'
--- src/runtime/numerics/NumericsImpl.h	2013-06-11 05:40:04 +0000
+++ src/runtime/numerics/NumericsImpl.h	2014-02-24 23:33:07 +0000
@@ -72,6 +72,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState&) const;
       
 public:
@@ -120,6 +122,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState&) const;
       
 public:
@@ -173,6 +177,8 @@
   
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 
@@ -209,6 +215,8 @@
   
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& planState) const;
 };
 

=== modified file 'src/runtime/numerics/pregenerated/numerics.cpp'
--- src/runtime/numerics/pregenerated/numerics.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/numerics/pregenerated/numerics.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 AbsIterator::~AbsIterator() {}
 
+
+zstring AbsIterator::getNameAsString() const {
+  return "fn:abs";
+}
 // </AbsIterator>
 
 
@@ -86,6 +90,10 @@
 
 CeilingIterator::~CeilingIterator() {}
 
+
+zstring CeilingIterator::getNameAsString() const {
+  return "fn:ceiling";
+}
 // </CeilingIterator>
 
 
@@ -114,6 +122,10 @@
 
 FloorIterator::~FloorIterator() {}
 
+
+zstring FloorIterator::getNameAsString() const {
+  return "fn:floor";
+}
 // </FloorIterator>
 
 
@@ -142,6 +154,10 @@
 
 RoundIterator::~RoundIterator() {}
 
+
+zstring RoundIterator::getNameAsString() const {
+  return "fn:round";
+}
 // </RoundIterator>
 
 
@@ -170,6 +186,10 @@
 
 RoundHalfToEvenIterator::~RoundHalfToEvenIterator() {}
 
+
+zstring RoundHalfToEvenIterator::getNameAsString() const {
+  return "fn:round-half-to-even";
+}
 // </RoundHalfToEvenIterator>
 
 
@@ -198,6 +218,10 @@
 
 FormatNumberIterator::~FormatNumberIterator() {}
 
+
+zstring FormatNumberIterator::getNameAsString() const {
+  return "fn:format-number";
+}
 // </FormatNumberIterator>
 
 
@@ -226,6 +250,10 @@
 
 FormatIntegerIterator::~FormatIntegerIterator() {}
 
+
+zstring FormatIntegerIterator::getNameAsString() const {
+  return "fn:format-integer";
+}
 // </FormatIntegerIterator>
 
 

=== modified file 'src/runtime/numerics/pregenerated/numerics.h'
--- src/runtime/numerics/pregenerated/numerics.h	2014-01-31 01:39:38 +0000
+++ src/runtime/numerics/pregenerated/numerics.h	2014-02-24 23:33:07 +0000
@@ -59,6 +59,8 @@
 
   virtual ~AbsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -89,6 +91,8 @@
 
   virtual ~CeilingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -119,6 +123,8 @@
 
   virtual ~FloorIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -149,6 +155,8 @@
 
   virtual ~RoundIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -179,6 +187,8 @@
 
   virtual ~RoundHalfToEvenIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -209,6 +219,8 @@
 
   virtual ~FormatNumberIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -239,6 +251,8 @@
 
   virtual ~FormatIntegerIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parse_fragment.cpp'
--- src/runtime/parsing_and_serializing/pregenerated/parse_fragment.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/parsing_and_serializing/pregenerated/parse_fragment.cpp	2014-02-24 23:33:07 +0000
@@ -66,6 +66,10 @@
 void FnZorbaParseXmlFragmentIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring FnZorbaParseXmlFragmentIterator::getNameAsString() const {
+  return "fn-zorba-xml:parse";
+}
 // </FnZorbaParseXmlFragmentIterator>
 
 
@@ -102,6 +106,10 @@
 void FnZorbaCanonicalizeIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring FnZorbaCanonicalizeIterator::getNameAsString() const {
+  return "fn-zorba-xml:canonicalize-impl";
+}
 // </FnZorbaCanonicalizeIterator>
 
 
@@ -138,6 +146,10 @@
 void FnParseXmlFragmentIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring FnParseXmlFragmentIterator::getNameAsString() const {
+  return "fn:parse-xml-fragment";
+}
 // </FnParseXmlFragmentIterator>
 
 

=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h'
--- src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h	2014-01-31 01:39:38 +0000
+++ src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h	2014-02-24 23:33:07 +0000
@@ -76,6 +76,8 @@
 
   virtual ~FnZorbaParseXmlFragmentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -119,6 +121,8 @@
 
   virtual ~FnZorbaCanonicalizeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -165,6 +169,8 @@
 
   virtual ~FnParseXmlFragmentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.cpp'
--- src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 FnParseXmlIterator::~FnParseXmlIterator() {}
 
+
+zstring FnParseXmlIterator::getNameAsString() const {
+  return "fn:parse-xml";
+}
 // </FnParseXmlIterator>
 
 
@@ -86,6 +90,10 @@
 
 FnSerializeIterator::~FnSerializeIterator() {}
 
+
+zstring FnSerializeIterator::getNameAsString() const {
+  return "fn:serialize";
+}
 // </FnSerializeIterator>
 
 

=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h'
--- src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h	2014-01-31 01:39:38 +0000
+++ src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~FnParseXmlIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -88,6 +90,8 @@
 
   virtual ~FnSerializeIterator();
 
+  zstring getNameAsString() const;
+
 public:
   static void streamReleaser(std::istream* stream);
   static void setSerializationParams(zorba::serializer& aSerializer, store::Item_t& aParamElem, static_context* aSctx, const QueryLoc& aLoc);

=== modified file 'src/runtime/qnames/pregenerated/qnames.cpp'
--- src/runtime/qnames/pregenerated/qnames.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/qnames/pregenerated/qnames.cpp	2014-02-24 23:33:07 +0000
@@ -55,6 +55,10 @@
 
 ResolveQNameIterator::~ResolveQNameIterator() {}
 
+
+zstring ResolveQNameIterator::getNameAsString() const {
+  return "fn:resolve-QName";
+}
 // </ResolveQNameIterator>
 
 
@@ -80,6 +84,10 @@
 
 QNameIterator::~QNameIterator() {}
 
+
+zstring QNameIterator::getNameAsString() const {
+  return "fn:QName";
+}
 // </QNameIterator>
 
 
@@ -105,6 +113,10 @@
 
 QNameEqualIterator::~QNameEqualIterator() {}
 
+
+zstring QNameEqualIterator::getNameAsString() const {
+  return "op:QName-equal";
+}
 // </QNameEqualIterator>
 
 
@@ -129,6 +141,10 @@
 
 PrefixFromQNameIterator::~PrefixFromQNameIterator() {}
 
+
+zstring PrefixFromQNameIterator::getNameAsString() const {
+  return "fn:prefix-from-QName";
+}
 // </PrefixFromQNameIterator>
 
 
@@ -153,6 +169,10 @@
 
 LocalNameFromQNameIterator::~LocalNameFromQNameIterator() {}
 
+
+zstring LocalNameFromQNameIterator::getNameAsString() const {
+  return "fn:local-name-from-QName";
+}
 // </LocalNameFromQNameIterator>
 
 
@@ -177,6 +197,10 @@
 
 NamespaceUriFromQNameIterator::~NamespaceUriFromQNameIterator() {}
 
+
+zstring NamespaceUriFromQNameIterator::getNameAsString() const {
+  return "fn:namespace-uri-from-QName";
+}
 // </NamespaceUriFromQNameIterator>
 
 
@@ -205,6 +229,10 @@
 
 NamespaceUriForPrefixIterator::~NamespaceUriForPrefixIterator() {}
 
+
+zstring NamespaceUriForPrefixIterator::getNameAsString() const {
+  return "fn:namespace-uri-for-prefix";
+}
 // </NamespaceUriForPrefixIterator>
 
 
@@ -233,6 +261,10 @@
 
 InScopePrefixesIteratorState::~InScopePrefixesIteratorState() {}
 
+
+zstring InScopePrefixesIterator::getNameAsString() const {
+  return "fn:in-scope-prefixes";
+}
 // </InScopePrefixesIterator>
 
 

=== modified file 'src/runtime/qnames/pregenerated/qnames.h'
--- src/runtime/qnames/pregenerated/qnames.h	2014-01-31 01:39:38 +0000
+++ src/runtime/qnames/pregenerated/qnames.h	2014-02-24 23:33:07 +0000
@@ -59,6 +59,8 @@
 
   virtual ~ResolveQNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -89,6 +91,8 @@
 
   virtual ~QNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -119,6 +123,8 @@
 
   virtual ~QNameEqualIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -149,6 +155,8 @@
 
   virtual ~PrefixFromQNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -179,6 +187,8 @@
 
   virtual ~LocalNameFromQNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -209,6 +219,8 @@
 
   virtual ~NamespaceUriFromQNameIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -239,6 +251,8 @@
 
   virtual ~NamespaceUriForPrefixIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -283,6 +297,8 @@
 
   virtual ~InScopePrefixesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/random/pregenerated/random.cpp'
--- src/runtime/random/pregenerated/random.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/random/pregenerated/random.cpp	2014-02-24 23:33:07 +0000
@@ -70,6 +70,10 @@
 void SeededRandomIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SeededRandomIterator::getNameAsString() const {
+  return "fn-zorba-random:seeded-random";
+}
 // </SeededRandomIterator>
 
 
@@ -110,6 +114,10 @@
 void RandomIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring RandomIterator::getNameAsString() const {
+  return "fn-zorba-random:random";
+}
 // </RandomIterator>
 
 
@@ -138,6 +146,10 @@
 
 UuidIterator::~UuidIterator() {}
 
+
+zstring UuidIterator::getNameAsString() const {
+  return "fn-zorba-util:uuid";
+}
 // </UuidIterator>
 
 

=== modified file 'src/runtime/random/pregenerated/random.h'
--- src/runtime/random/pregenerated/random.h	2014-01-31 01:39:38 +0000
+++ src/runtime/random/pregenerated/random.h	2014-02-24 23:33:07 +0000
@@ -75,6 +75,8 @@
 
   virtual ~SeededRandomIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -122,6 +124,8 @@
 
   virtual ~RandomIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -152,6 +156,8 @@
 
   virtual ~UuidIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/reference/pregenerated/reference.cpp'
--- src/runtime/reference/pregenerated/reference.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/reference/pregenerated/reference.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 ReferenceIterator::~ReferenceIterator() {}
 
+
+zstring ReferenceIterator::getNameAsString() const {
+  return "fn-reference:reference";
+}
 // </ReferenceIterator>
 
 
@@ -86,6 +90,10 @@
 
 HasReferenceIterator::~HasReferenceIterator() {}
 
+
+zstring HasReferenceIterator::getNameAsString() const {
+  return "fn-reference:has-reference";
+}
 // </HasReferenceIterator>
 
 
@@ -114,6 +122,10 @@
 
 AssignReferenceIterator::~AssignReferenceIterator() {}
 
+
+zstring AssignReferenceIterator::getNameAsString() const {
+  return "fn-reference:assign-reference";
+}
 // </AssignReferenceIterator>
 
 
@@ -142,6 +154,10 @@
 
 DereferenceIterator::~DereferenceIterator() {}
 
+
+zstring DereferenceIterator::getNameAsString() const {
+  return "fn-reference:dereference";
+}
 // </DereferenceIterator>
 
 

=== modified file 'src/runtime/reference/pregenerated/reference.h'
--- src/runtime/reference/pregenerated/reference.h	2014-01-31 01:39:38 +0000
+++ src/runtime/reference/pregenerated/reference.h	2014-02-24 23:33:07 +0000
@@ -60,6 +60,8 @@
 
   virtual ~ReferenceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -92,6 +94,8 @@
 
   virtual ~HasReferenceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -124,6 +128,8 @@
 
   virtual ~AssignReferenceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -156,6 +162,8 @@
 
   virtual ~DereferenceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/schema/pregenerated/schema.cpp'
--- src/runtime/schema/pregenerated/schema.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/schema/pregenerated/schema.cpp	2014-02-24 23:33:07 +0000
@@ -52,6 +52,10 @@
 
 ValidateIterator::~ValidateIterator() {}
 
+
+zstring ValidateIterator::getNameAsString() const {
+  return "ValidateIterator";
+}
 // </ValidateIterator>
 
 #endif
@@ -76,6 +80,10 @@
 
 ZorbaValidateInPlaceIterator::~ZorbaValidateInPlaceIterator() {}
 
+
+zstring ZorbaValidateInPlaceIterator::getNameAsString() const {
+  return "fn-zorba-schema:validate-in-place";
+}
 // </ZorbaValidateInPlaceIterator>
 
 
@@ -104,6 +112,10 @@
 
 ZorbaSchemaTypeIterator::~ZorbaSchemaTypeIterator() {}
 
+
+zstring ZorbaSchemaTypeIterator::getNameAsString() const {
+  return "fn-zorba-schema:schema-type";
+}
 // </ZorbaSchemaTypeIterator>
 
 
@@ -132,6 +144,10 @@
 
 ZorbaIsValidatedIterator::~ZorbaIsValidatedIterator() {}
 
+
+zstring ZorbaIsValidatedIterator::getNameAsString() const {
+  return "fn-zorba-schema:is-validated";
+}
 // </ZorbaIsValidatedIterator>
 
 

=== modified file 'src/runtime/schema/pregenerated/schema.h'
--- src/runtime/schema/pregenerated/schema.h	2014-01-31 01:39:38 +0000
+++ src/runtime/schema/pregenerated/schema.h	2014-02-24 23:33:07 +0000
@@ -70,6 +70,8 @@
 
   virtual ~ValidateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -101,6 +103,8 @@
 
   virtual ~ZorbaValidateInPlaceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -131,6 +135,8 @@
 
   virtual ~ZorbaSchemaTypeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -161,6 +167,8 @@
 
   virtual ~ZorbaIsValidatedIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/scripting/scripting.cpp'
--- src/runtime/scripting/scripting.cpp	2013-02-07 17:24:36 +0000
+++ src/runtime/scripting/scripting.cpp	2014-02-24 23:33:07 +0000
@@ -33,14 +33,19 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(FlowCtlIterator)
+DEF_GET_NAME_AS_STRING(FlowCtlIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(SequentialIterator)
+DEF_GET_NAME_AS_STRING(SequentialIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(LoopIterator)
+DEF_GET_NAME_AS_STRING(LoopIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ExitIterator)
+DEF_GET_NAME_AS_STRING(ExitIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ExitCatcherIterator)
+DEF_GET_NAME_AS_STRING(ExitCatcherIterator)
 
 
 

=== modified file 'src/runtime/scripting/scripting.h'
--- src/runtime/scripting/scripting.h	2013-06-15 02:57:08 +0000
+++ src/runtime/scripting/scripting.h	2014-02-24 23:33:07 +0000
@@ -50,6 +50,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 
 protected:
@@ -82,6 +84,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -109,6 +113,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -150,6 +156,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 
@@ -179,6 +187,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 

=== modified file 'src/runtime/sctx/pregenerated/sctx.cpp'
--- src/runtime/sctx/pregenerated/sctx.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/sctx/pregenerated/sctx.cpp	2014-02-24 23:33:07 +0000
@@ -59,6 +59,10 @@
 
 SctxBaseUriIterator::~SctxBaseUriIterator() {}
 
+
+zstring SctxBaseUriIterator::getNameAsString() const {
+  return "fn-zorba-sctx:base-uri";
+}
 // </SctxBaseUriIterator>
 
 
@@ -87,6 +91,10 @@
 
 SctxBoundarySpacePolicyIterator::~SctxBoundarySpacePolicyIterator() {}
 
+
+zstring SctxBoundarySpacePolicyIterator::getNameAsString() const {
+  return "fn-zorba-sctx:boundary-space-policy";
+}
 // </SctxBoundarySpacePolicyIterator>
 
 
@@ -115,6 +123,10 @@
 
 SctxConstructionModeIterator::~SctxConstructionModeIterator() {}
 
+
+zstring SctxConstructionModeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:construction-mode";
+}
 // </SctxConstructionModeIterator>
 
 
@@ -143,6 +155,10 @@
 
 SctxCopyNamespacesModeIterator::~SctxCopyNamespacesModeIterator() {}
 
+
+zstring SctxCopyNamespacesModeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:copy-namespaces-mode";
+}
 // </SctxCopyNamespacesModeIterator>
 
 
@@ -171,6 +187,10 @@
 
 SctxDefaultCollationIterator::~SctxDefaultCollationIterator() {}
 
+
+zstring SctxDefaultCollationIterator::getNameAsString() const {
+  return "fn-zorba-sctx:default-collation";
+}
 // </SctxDefaultCollationIterator>
 
 
@@ -199,6 +219,10 @@
 
 SctxDefaultCollectionTypeIterator::~SctxDefaultCollectionTypeIterator() {}
 
+
+zstring SctxDefaultCollectionTypeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:default-collection-type";
+}
 // </SctxDefaultCollectionTypeIterator>
 
 
@@ -227,6 +251,10 @@
 
 SctxDefaultFunctionNamespaceIterator::~SctxDefaultFunctionNamespaceIterator() {}
 
+
+zstring SctxDefaultFunctionNamespaceIterator::getNameAsString() const {
+  return "fn-zorba-sctx:default-function-namespace";
+}
 // </SctxDefaultFunctionNamespaceIterator>
 
 
@@ -255,6 +283,10 @@
 
 SctxDefaultOrderIterator::~SctxDefaultOrderIterator() {}
 
+
+zstring SctxDefaultOrderIterator::getNameAsString() const {
+  return "fn-zorba-sctx:default-order";
+}
 // </SctxDefaultOrderIterator>
 
 
@@ -291,6 +323,10 @@
 void SctxFunctionAnnotationsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxFunctionAnnotationsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:function-annotations";
+}
 // </SctxFunctionAnnotationsIterator>
 
 
@@ -327,6 +363,10 @@
 void SctxFunctionArgumentsCountIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxFunctionArgumentsCountIterator::getNameAsString() const {
+  return "fn-zorba-sctx:function-arguments-count";
+}
 // </SctxFunctionArgumentsCountIterator>
 
 
@@ -363,6 +403,10 @@
 void SctxFunctionNamesIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxFunctionNamesIterator::getNameAsString() const {
+  return "fn-zorba-sctx:function-names";
+}
 // </SctxFunctionNamesIterator>
 
 
@@ -399,6 +443,10 @@
 void SctxFunctionsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxFunctionsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:functions";
+}
 // </SctxFunctionsIterator>
 
 
@@ -435,6 +483,10 @@
 void SctxInScopeAttributeDeclarationsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInScopeAttributeDeclarationsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-attribute-declarations";
+}
 // </SctxInScopeAttributeDeclarationsIterator>
 
 
@@ -471,6 +523,10 @@
 void SctxInScopeAttributeGroupsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInScopeAttributeGroupsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-attribute-groups";
+}
 // </SctxInScopeAttributeGroupsIterator>
 
 
@@ -507,6 +563,10 @@
 void SctxInScopeElementDeclarationsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInScopeElementDeclarationsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-element-declarations";
+}
 // </SctxInScopeElementDeclarationsIterator>
 
 
@@ -543,6 +603,10 @@
 void SctxInScopeElementGroupsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInScopeElementGroupsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-element-groups";
+}
 // </SctxInScopeElementGroupsIterator>
 
 
@@ -579,6 +643,10 @@
 void SctxInScopeSchemaTypesIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInScopeSchemaTypesIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-schema-types";
+}
 // </SctxInScopeSchemaTypesIterator>
 
 
@@ -615,6 +683,10 @@
 void SctxInscopeVariablesIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxInscopeVariablesIterator::getNameAsString() const {
+  return "fn-zorba-sctx:in-scope-variables";
+}
 // </SctxInscopeVariablesIterator>
 
 
@@ -643,6 +715,10 @@
 
 SctxOptionIterator::~SctxOptionIterator() {}
 
+
+zstring SctxOptionIterator::getNameAsString() const {
+  return "fn-zorba-sctx:option";
+}
 // </SctxOptionIterator>
 
 
@@ -671,6 +747,10 @@
 
 SctxOrderingModeIterator::~SctxOrderingModeIterator() {}
 
+
+zstring SctxOrderingModeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:ordering-mode";
+}
 // </SctxOrderingModeIterator>
 
 
@@ -707,6 +787,10 @@
 void SctxStaticallyKnownCollationsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxStaticallyKnownCollationsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:statically-known-collations";
+}
 // </SctxStaticallyKnownCollationsIterator>
 
 
@@ -743,6 +827,10 @@
 void SctxStaticallyKnownDocumentsIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxStaticallyKnownDocumentsIterator::getNameAsString() const {
+  return "fn-zorba-sctx:statically-known-documents";
+}
 // </SctxStaticallyKnownDocumentsIterator>
 
 
@@ -771,6 +859,10 @@
 
 SctxStaticallyKnownDocumentTypeIterator::~SctxStaticallyKnownDocumentTypeIterator() {}
 
+
+zstring SctxStaticallyKnownDocumentTypeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:statically-known-document-type";
+}
 // </SctxStaticallyKnownDocumentTypeIterator>
 
 
@@ -799,6 +891,10 @@
 
 SctxStaticallyKnownNamespaceBindingIterator::~SctxStaticallyKnownNamespaceBindingIterator() {}
 
+
+zstring SctxStaticallyKnownNamespaceBindingIterator::getNameAsString() const {
+  return "fn-zorba-sctx:statically-known-namespace-binding";
+}
 // </SctxStaticallyKnownNamespaceBindingIterator>
 
 
@@ -835,6 +931,10 @@
 void SctxStaticallyKnownNamespacesIteratorState::init(PlanState& planState) {
   PlanIteratorState::init(planState);
 }
+
+zstring SctxStaticallyKnownNamespacesIterator::getNameAsString() const {
+  return "fn-zorba-sctx:statically-known-namespaces";
+}
 // </SctxStaticallyKnownNamespacesIterator>
 
 
@@ -863,6 +963,10 @@
 
 SctxXPath10CompatModeIterator::~SctxXPath10CompatModeIterator() {}
 
+
+zstring SctxXPath10CompatModeIterator::getNameAsString() const {
+  return "fn-zorba-sctx:xpath10-compatibility-mode";
+}
 // </SctxXPath10CompatModeIterator>
 
 

=== modified file 'src/runtime/sctx/pregenerated/sctx.h'
--- src/runtime/sctx/pregenerated/sctx.h	2014-01-31 01:39:38 +0000
+++ src/runtime/sctx/pregenerated/sctx.h	2014-02-24 23:33:07 +0000
@@ -59,6 +59,8 @@
 
   virtual ~SctxBaseUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -89,6 +91,8 @@
 
   virtual ~SctxBoundarySpacePolicyIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -119,6 +123,8 @@
 
   virtual ~SctxConstructionModeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -149,6 +155,8 @@
 
   virtual ~SctxCopyNamespacesModeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -179,6 +187,8 @@
 
   virtual ~SctxDefaultCollationIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -209,6 +219,8 @@
 
   virtual ~SctxDefaultCollectionTypeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -239,6 +251,8 @@
 
   virtual ~SctxDefaultFunctionNamespaceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -269,6 +283,8 @@
 
   virtual ~SctxDefaultOrderIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -313,6 +329,8 @@
 
   virtual ~SctxFunctionAnnotationsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -357,6 +375,8 @@
 
   virtual ~SctxFunctionArgumentsCountIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -401,6 +421,8 @@
 
   virtual ~SctxFunctionNamesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -445,6 +467,8 @@
 
   virtual ~SctxFunctionsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -489,6 +513,8 @@
 
   virtual ~SctxInScopeAttributeDeclarationsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -533,6 +559,8 @@
 
   virtual ~SctxInScopeAttributeGroupsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -577,6 +605,8 @@
 
   virtual ~SctxInScopeElementDeclarationsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -621,6 +651,8 @@
 
   virtual ~SctxInScopeElementGroupsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -665,6 +697,8 @@
 
   virtual ~SctxInScopeSchemaTypesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -710,6 +744,8 @@
 
   virtual ~SctxInscopeVariablesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -740,6 +776,8 @@
 
   virtual ~SctxOptionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -770,6 +808,8 @@
 
   virtual ~SctxOrderingModeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -814,6 +854,8 @@
 
   virtual ~SctxStaticallyKnownCollationsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -858,6 +900,8 @@
 
   virtual ~SctxStaticallyKnownDocumentsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -888,6 +932,8 @@
 
   virtual ~SctxStaticallyKnownDocumentTypeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -918,6 +964,8 @@
 
   virtual ~SctxStaticallyKnownNamespaceBindingIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -962,6 +1010,8 @@
 
   virtual ~SctxStaticallyKnownNamespacesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -992,6 +1042,8 @@
 
   virtual ~SctxXPath10CompatModeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/seq/pregenerated/seq.cpp'
--- src/runtime/seq/pregenerated/seq.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/seq/pregenerated/seq.cpp	2014-02-24 23:33:07 +0000
@@ -71,6 +71,10 @@
 void SeqValueIntersectIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SeqValueIntersectIterator::getNameAsString() const {
+  return "fn-zorba-seq:value-intersect";
+}
 // </SeqValueIntersectIterator>
 
 
@@ -111,6 +115,10 @@
 void SeqValueUnionIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SeqValueUnionIterator::getNameAsString() const {
+  return "fn-zorba-seq:value-union";
+}
 // </SeqValueUnionIterator>
 
 
@@ -151,6 +159,10 @@
 void SeqValueExceptIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring SeqValueExceptIterator::getNameAsString() const {
+  return "fn-zorba-seq:value-except";
+}
 // </SeqValueExceptIterator>
 
 

=== modified file 'src/runtime/seq/pregenerated/seq.h'
--- src/runtime/seq/pregenerated/seq.h	2014-01-31 01:39:38 +0000
+++ src/runtime/seq/pregenerated/seq.h	2014-02-24 23:33:07 +0000
@@ -72,6 +72,8 @@
 
   virtual ~SeqValueIntersectIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -116,6 +118,8 @@
 
   virtual ~SeqValueUnionIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -159,6 +163,8 @@
 
   virtual ~SeqValueExceptIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/sequences/SequencesImpl.cpp'
--- src/runtime/sequences/SequencesImpl.cpp	2013-06-11 05:40:04 +0000
+++ src/runtime/sequences/SequencesImpl.cpp	2014-02-24 23:33:07 +0000
@@ -61,6 +61,7 @@
 SERIALIZABLE_CLASS_VERSIONS(FnMinMaxIterator)
 
 NARY_ACCEPT(FnMinMaxIterator);
+DEF_GET_NAME_AS_STRING(FnMinMaxIterator)
 
 
 /////////////////////////////////////////////////////////////////////////////////

=== modified file 'src/runtime/sequences/SequencesImpl.h'
--- src/runtime/sequences/SequencesImpl.h	2013-08-14 08:46:44 +0000
+++ src/runtime/sequences/SequencesImpl.h	2014-02-24 23:33:07 +0000
@@ -85,6 +85,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
 };
 

=== modified file 'src/runtime/sequences/pregenerated/sequences.cpp'
--- src/runtime/sequences/pregenerated/sequences.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/sequences/pregenerated/sequences.cpp	2014-02-24 23:33:07 +0000
@@ -63,6 +63,10 @@
 
 FnConcatIteratorState::~FnConcatIteratorState() {}
 
+
+zstring FnConcatIterator::getNameAsString() const {
+  return "op:concatenate";
+}
 // </FnConcatIterator>
 
 
@@ -111,6 +115,10 @@
   theSearchItem = NULL;
   theCollator = 0;
 }
+
+zstring FnIndexOfIterator::getNameAsString() const {
+  return "fn:index-of";
+}
 // </FnIndexOfIterator>
 
 
@@ -139,6 +147,10 @@
 
 FnEmptyIterator::~FnEmptyIterator() {}
 
+
+zstring FnEmptyIterator::getNameAsString() const {
+  return "fn:empty";
+}
 // </FnEmptyIterator>
 
 
@@ -167,6 +179,10 @@
 
 FnExistsIterator::~FnExistsIterator() {}
 
+
+zstring FnExistsIterator::getNameAsString() const {
+  return "fn:exists";
+}
 // </FnExistsIterator>
 
 
@@ -204,6 +220,10 @@
   PlanIteratorState::init(planState);
   theHasNaN = false;
 }
+
+zstring FnDistinctValuesIterator::getNameAsString() const {
+  return "fn:distinct-values";
+}
 // </FnDistinctValuesIterator>
 
 
@@ -250,6 +270,10 @@
   thePosition = numeric_consts<xs_integer>::zero();
   theTargetItem = NULL;
 }
+
+zstring FnInsertBeforeIterator::getNameAsString() const {
+  return "fn:insert-before";
+}
 // </FnInsertBeforeIterator>
 
 
@@ -296,6 +320,10 @@
   thePosition = numeric_consts<xs_integer>::zero();
   theCollator = 0;
 }
+
+zstring FnRemoveIterator::getNameAsString() const {
+  return "fn:remove";
+}
 // </FnRemoveIterator>
 
 
@@ -328,6 +356,10 @@
 
 FnReverseIteratorState::~FnReverseIteratorState() {}
 
+
+zstring FnReverseIterator::getNameAsString() const {
+  return "fn:reverse";
+}
 // </FnReverseIterator>
 
 
@@ -372,6 +404,10 @@
   theRemaining = 0;
   theIsChildReset = false;
 }
+
+zstring FnSubsequenceIterator::getNameAsString() const {
+  return "fn:subsequence";
+}
 // </FnSubsequenceIterator>
 
 
@@ -416,6 +452,10 @@
   theRemaining = 0;
   theIsChildReset = false;
 }
+
+zstring SubsequenceIntIterator::getNameAsString() const {
+  return "op-zorba:subsequence-int";
+}
 // </SubsequenceIntIterator>
 
 
@@ -458,6 +498,10 @@
   PlanIteratorState::reset(planState);
   theIsChildReset = false;
 }
+
+zstring SequencePointAccessIterator::getNameAsString() const {
+  return "op-zorba:sequence-point-access";
+}
 // </SequencePointAccessIterator>
 
 
@@ -488,6 +532,10 @@
 
 FnZeroOrOneIterator::~FnZeroOrOneIterator() {}
 
+
+zstring FnZeroOrOneIterator::getNameAsString() const {
+  return "fn:zero-or-one";
+}
 // </FnZeroOrOneIterator>
 
 
@@ -516,6 +564,10 @@
 
 FnOneOrMoreIterator::~FnOneOrMoreIterator() {}
 
+
+zstring FnOneOrMoreIterator::getNameAsString() const {
+  return "fn:one-or-more";
+}
 // </FnOneOrMoreIterator>
 
 
@@ -547,6 +599,10 @@
 
 FnExactlyOneIterator::~FnExactlyOneIterator() {}
 
+
+zstring FnExactlyOneIterator::getNameAsString() const {
+  return "FnExactlyOneIterator";
+}
 // </FnExactlyOneIterator>
 
 
@@ -575,6 +631,10 @@
 
 FnDeepEqualIterator::~FnDeepEqualIterator() {}
 
+
+zstring FnDeepEqualIterator::getNameAsString() const {
+  return "fn:deep-equal";
+}
 // </FnDeepEqualIterator>
 
 
@@ -605,6 +665,10 @@
 
 HashSemiJoinIterator::~HashSemiJoinIterator() {}
 
+
+zstring HashSemiJoinIterator::getNameAsString() const {
+  return "HashSemiJoinIterator";
+}
 // </HashSemiJoinIterator>
 
 
@@ -633,6 +697,10 @@
 
 SortSemiJoinIterator::~SortSemiJoinIterator() {}
 
+
+zstring SortSemiJoinIterator::getNameAsString() const {
+  return "SortSemiJoinIterator";
+}
 // </SortSemiJoinIterator>
 
 
@@ -661,6 +729,10 @@
 
 FnCountIterator::~FnCountIterator() {}
 
+
+zstring FnCountIterator::getNameAsString() const {
+  return "fn:count";
+}
 // </FnCountIterator>
 
 
@@ -689,6 +761,10 @@
 
 FnAvgIterator::~FnAvgIterator() {}
 
+
+zstring FnAvgIterator::getNameAsString() const {
+  return "fn:avg";
+}
 // </FnAvgIterator>
 
 
@@ -717,6 +793,10 @@
 
 FnSumIterator::~FnSumIterator() {}
 
+
+zstring FnSumIterator::getNameAsString() const {
+  return "fn:sum";
+}
 // </FnSumIterator>
 
 
@@ -745,6 +825,10 @@
 
 FnSumDoubleIterator::~FnSumDoubleIterator() {}
 
+
+zstring FnSumDoubleIterator::getNameAsString() const {
+  return "op:sum_double";
+}
 // </FnSumDoubleIterator>
 
 
@@ -773,6 +857,10 @@
 
 FnSumFloatIterator::~FnSumFloatIterator() {}
 
+
+zstring FnSumFloatIterator::getNameAsString() const {
+  return "op:sum_float";
+}
 // </FnSumFloatIterator>
 
 
@@ -801,6 +889,10 @@
 
 FnSumDecimalIterator::~FnSumDecimalIterator() {}
 
+
+zstring FnSumDecimalIterator::getNameAsString() const {
+  return "op:sum_decimal";
+}
 // </FnSumDecimalIterator>
 
 
@@ -829,6 +921,10 @@
 
 FnSumIntegerIterator::~FnSumIntegerIterator() {}
 
+
+zstring FnSumIntegerIterator::getNameAsString() const {
+  return "op:sum_integer";
+}
 // </FnSumIntegerIterator>
 
 
@@ -875,6 +971,10 @@
   theFirstVal = numeric_consts<xs_integer>::zero();
   theLastVal = numeric_consts<xs_integer>::zero();
 }
+
+zstring OpToIterator::getNameAsString() const {
+  return "op:to";
+}
 // </OpToIterator>
 
 
@@ -907,6 +1007,10 @@
 
 FnIdIteratorState::~FnIdIteratorState() {}
 
+
+zstring FnIdIterator::getNameAsString() const {
+  return "fn:id";
+}
 // </FnIdIterator>
 
 
@@ -939,6 +1043,10 @@
 
 FnElementWithIdIteratorState::~FnElementWithIdIteratorState() {}
 
+
+zstring FnElementWithIdIterator::getNameAsString() const {
+  return "fn:element-with-id";
+}
 // </FnElementWithIdIterator>
 
 
@@ -971,6 +1079,10 @@
 
 FnIdRefIteratorState::~FnIdRefIteratorState() {}
 
+
+zstring FnIdRefIterator::getNameAsString() const {
+  return "fn:idref";
+}
 // </FnIdRefIterator>
 
 
@@ -999,6 +1111,10 @@
 
 FnDocIterator::~FnDocIterator() {}
 
+
+zstring FnDocIterator::getNameAsString() const {
+  return "fn:doc";
+}
 // </FnDocIterator>
 
 
@@ -1027,6 +1143,10 @@
 
 FnDocAvailableIterator::~FnDocAvailableIterator() {}
 
+
+zstring FnDocAvailableIterator::getNameAsString() const {
+  return "fn:doc-available";
+}
 // </FnDocAvailableIterator>
 
 
@@ -1059,6 +1179,10 @@
 
 FnAvailableEnvironmentVariablesIteratorState::~FnAvailableEnvironmentVariablesIteratorState() {}
 
+
+zstring FnAvailableEnvironmentVariablesIterator::getNameAsString() const {
+  return "fn:available-environment-variables";
+}
 // </FnAvailableEnvironmentVariablesIterator>
 
 
@@ -1087,6 +1211,10 @@
 
 FnEnvironmentVariableIterator::~FnEnvironmentVariableIterator() {}
 
+
+zstring FnEnvironmentVariableIterator::getNameAsString() const {
+  return "fn:environment-variable";
+}
 // </FnEnvironmentVariableIterator>
 
 
@@ -1115,6 +1243,10 @@
 
 FnUnparsedTextIterator::~FnUnparsedTextIterator() {}
 
+
+zstring FnUnparsedTextIterator::getNameAsString() const {
+  return "fn:unparsed-text";
+}
 // </FnUnparsedTextIterator>
 
 
@@ -1143,6 +1275,10 @@
 
 FnUnparsedTextAvailableIterator::~FnUnparsedTextAvailableIterator() {}
 
+
+zstring FnUnparsedTextAvailableIterator::getNameAsString() const {
+  return "fn:unparsed-text-available";
+}
 // </FnUnparsedTextAvailableIterator>
 
 
@@ -1173,6 +1309,10 @@
 
 FnUnparsedTextLinesIteratorState::FnUnparsedTextLinesIteratorState() {}
 
+
+zstring FnUnparsedTextLinesIterator::getNameAsString() const {
+  return "fn:unparsed-text-lines";
+}
 // </FnUnparsedTextLinesIterator>
 
 

=== modified file 'src/runtime/sequences/pregenerated/sequences.h'
--- src/runtime/sequences/pregenerated/sequences.h	2014-01-31 01:39:38 +0000
+++ src/runtime/sequences/pregenerated/sequences.h	2014-02-24 23:33:07 +0000
@@ -77,6 +77,8 @@
 
   virtual ~FnConcatIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -149,6 +151,8 @@
 
   virtual ~FnIndexOfIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -182,6 +186,8 @@
 
   virtual ~FnEmptyIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -215,6 +221,8 @@
 
   virtual ~FnExistsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -267,6 +275,8 @@
 
   virtual ~FnDistinctValuesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -316,6 +326,8 @@
 
   virtual ~FnInsertBeforeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -364,6 +376,8 @@
 
   virtual ~FnRemoveIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -409,6 +423,8 @@
 
   virtual ~FnReverseIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -455,6 +471,8 @@
 
   virtual ~FnSubsequenceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -503,6 +521,8 @@
 
   virtual ~SubsequenceIntIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -550,6 +570,8 @@
 
   virtual ~SequencePointAccessIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -588,6 +610,8 @@
 
   virtual ~FnZeroOrOneIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -620,6 +644,8 @@
 
   virtual ~FnOneOrMoreIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -659,6 +685,8 @@
 
   virtual ~FnExactlyOneIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -694,6 +722,8 @@
 
   virtual ~FnDeepEqualIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -747,6 +777,8 @@
 
   virtual ~HashSemiJoinIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -786,6 +818,8 @@
 
   virtual ~SortSemiJoinIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -816,6 +850,8 @@
 
   virtual ~FnCountIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -848,6 +884,8 @@
 
   virtual ~FnAvgIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -883,6 +921,8 @@
 
   virtual ~FnSumIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -915,6 +955,8 @@
 
   virtual ~FnSumDoubleIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -947,6 +989,8 @@
 
   virtual ~FnSumFloatIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -979,6 +1023,8 @@
 
   virtual ~FnSumDecimalIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1011,6 +1057,8 @@
 
   virtual ~FnSumIntegerIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1056,6 +1104,8 @@
 
   virtual ~OpToIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1107,6 +1157,8 @@
 
   virtual ~FnIdIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1160,6 +1212,8 @@
 
   virtual ~FnElementWithIdIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1206,6 +1260,8 @@
 
   virtual ~FnIdRefIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1236,6 +1292,8 @@
 
   virtual ~FnDocIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1266,6 +1324,8 @@
 
   virtual ~FnDocAvailableIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1316,6 +1376,8 @@
 
   virtual ~FnAvailableEnvironmentVariablesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1351,6 +1413,8 @@
 
   virtual ~FnEnvironmentVariableIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1384,6 +1448,8 @@
 
   virtual ~FnUnparsedTextIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1418,6 +1484,8 @@
 
   virtual ~FnUnparsedTextAvailableIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1465,6 +1533,8 @@
 
   virtual ~FnUnparsedTextLinesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/spec/iterator_cpp.xq'
--- src/runtime/spec/iterator_cpp.xq	2014-01-31 01:39:38 +0000
+++ src/runtime/spec/iterator_cpp.xq	2014-02-24 23:33:07 +0000
@@ -95,6 +95,8 @@
       )
     else (),
 
+    local:generate-getNameAsString($iter),
+
     (: finish iterator implementation with a closing comment :)
     '// &lt;/',$iter/@name,'&gt;',$gen:newline,$gen:newline,
 
@@ -186,6 +188,24 @@
   ), '')
 };
 
+declare function local:generate-getNameAsString($iter) as xs:string
+{
+  let $signature := $iter/zorba:function[1]/zorba:signature[1]
+  let $name :=
+    if ( $signature )
+    then
+      let $prefix := fn:data( $signature/@prefix )
+      let $localname := fn:data( $signature/@localname )
+      return concat( $prefix, ':', $localname )
+    else
+      fn:data( $iter/@name )
+  return concat(
+    $gen:newline,
+    "zstring ", fn:data( $iter/@name ), "::getNameAsString() const {", $gen:newline,
+    $gen:indent, 'return "', $name, '";', $gen:newline,
+    "}", $gen:newline
+  )
+};
 
 declare function local:generate-serialize($iter) as xs:string
 {

=== modified file 'src/runtime/spec/iterator_h.xq'
--- src/runtime/spec/iterator_h.xq	2014-01-31 01:39:38 +0000
+++ src/runtime/spec/iterator_h.xq	2014-02-24 23:33:07 +0000
@@ -180,6 +180,14 @@
 };
 
 
+declare function local:add-getNameAsString( $iter ) as xs:string
+{
+  fn:concat(
+    $gen:indent, "zstring getNameAsString() const;", $gen:newline, $gen:newline
+  )
+};
+
+
 declare function local:iterator($iter, $name as xs:string, $state as xs:string) as xs:string
 {
   let $template := if ($iter/zorba:template)
@@ -226,6 +234,8 @@
 
     local:add-setter($iter),
 
+    local:add-getNameAsString($iter),
+
     if ($iter/zorba:method) then
       local:add-methods($iter)
     else (),

=== modified file 'src/runtime/spec/printer_visitor_h.xq'
--- src/runtime/spec/printer_visitor_h.xq	2014-01-31 01:39:38 +0000
+++ src/runtime/spec/printer_visitor_h.xq	2014-02-24 23:33:07 +0000
@@ -66,11 +66,14 @@
     $gen:indent, 'private:', $gen:newline,
     gen:indent(2),'IterPrinter&amp; thePrinter;',$gen:newline,
     gen:indent(2),'PlanIterator* theIterator;',$gen:newline,
+    gen:indent(2),'PlanState* thePlanState;',$gen:newline,
     gen:indent(2),'int theId;',$gen:newline,
     $gen:indent,'public:',$gen:newline,
-    gen:indent(2),'PrinterVisitor(IterPrinter&amp; aPrinter, PlanIterator* aIter)',$gen:newline,
+    gen:indent(2),'PrinterVisitor(IterPrinter&amp; aPrinter, PlanIterator* aIter, PlanState *state = 0 )',$gen:newline,
     gen:indent(2),':',
-    gen:indent(2),'thePrinter(aPrinter), theIterator(aIter), theId(0) {}',$gen:newline,$gen:newline,
+    gen:indent(2),'thePrinter(aPrinter), theIterator(aIter), thePlanState( state ), theId(0) {}',$gen:newline,$gen:newline,
+    gen:indent(2),'PlanState* getPlanState() const { return thePlanState; }',$gen:newline,
+    gen:indent(2),'void setPlanState( PlanState *s ) { thePlanState = s; }',$gen:newline,
     gen:indent(2),'void print();',$gen:newline,
     gen:indent(2),'void printCommons(const PlanIterator* aIter, int theId);',$gen:newline, $gen:newline,
     (: temporarily included until all iterators are generated :)
@@ -80,8 +83,11 @@
 
 declare function local:create-fwd-decl() as xs:string
 {
-  string-join(($gen:indent, 'class PlanIterator;', $gen:newline,
-  $gen:indent,'class IterPrinter;'),'')
+  concat(
+    $gen:indent, 'class PlanIterator;', $gen:newline,
+    $gen:indent, 'class PlanState;', $gen:newline,
+    $gen:indent,'class IterPrinter;', $gen:newline
+  )
 };
 
 (: list all files that need to be included :)
@@ -114,3 +120,4 @@
               string-join(($gen:newline,$gen:newline),''))
 }
 
+(: vim:set et sw=2 ts=2: :)

=== added file 'src/runtime/spec/profile_visitor_cpp.xq'
--- src/runtime/spec/profile_visitor_cpp.xq	1970-01-01 00:00:00 +0000
+++ src/runtime/spec/profile_visitor_cpp.xq	2014-02-24 23:33:07 +0000
@@ -0,0 +1,139 @@
+(:
+ : Copyright 2006-2014 The FLWOR Foundation.
+ :
+ : Licensed under the Apache License, Version 2.0 (the "License");
+ : you may not use this file except in compliance with the License.
+ : You may obtain a copy of the License at
+ :
+ : http://www.apache.org/licenses/LICENSE-2.0
+ :
+ : Unless required by applicable law or agreed to in writing, software
+ : distributed under the License is distributed on an "AS IS" BASIS,
+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ : See the License for the specific language governing permissions and
+ : limitations under the License.
+:)
+
+declare namespace zorba = "http://www.zorba-xquery.com";;
+declare namespace ann = "http://zorba.io/annotations";;
+
+import module namespace gen = "http://www.zorba-xquery.com/internal/gen"; at "utils.xq";
+import module namespace file = "http://expath.org/ns/file";;
+
+declare %ann:nondeterministic function local:get-files( $files as xs:string )
+  as xs:string
+{
+  variable $xml-files as xs:string* := tokenize( $files, ',' );
+  variable $temp :=
+    for $file in $xml-files
+    return local:process-file( $file );
+
+  string-join( $temp, $gen:newline )
+};
+
+declare %ann:nondeterministic function local:process-file( $file )
+  as xs:string
+{
+  let $doc := fn:parse-xml( file:read-text( $file ) )/zorba:iterators
+  return
+    string-join(
+      for $iter in $doc//zorba:iterator
+      return 
+        if ( fn:not($iter/@generateVisitor) or $iter/@generateVisitor eq "true")
+        then
+          if ( fn:not( $iter/@name = "" ) )
+          then local:process-iter( $iter )
+          else ()
+        else (),
+      $gen:newline
+    )
+};
+
+declare function local:create-class()
+  as xs:string
+{
+  concat(
+    '#include "runtime/visitors/plan_iter_visitor_impl.h"', $gen:newline
+  )
+};
+
+declare function local:create-includes( $files )
+  as xs:string
+{
+  (: compute the name of the header file to be included.
+     take the substring after src/runtime/spec/ and replace
+     .xml by .h
+   :)
+  fn:concat(
+    '#include "stdafx.h"', $gen:newline,
+    '#include "runtime/visitors/profile_visitor.h"', $gen:newline,
+    '#include "runtime/visitors/planiter_visitor.h"', $gen:newline,
+    '#include &lt;zorba/properties.h&gt;', $gen:newline,
+    '#include "util/string_util.h"', $gen:newline,
+    string-join(
+      for $i in tokenize( $files, ',' )
+      let $xml-file := fn:replace( $i, ".xml", ".h" )
+      return fn:concat( '#include "runtime/', $xml-file, '"' ),
+      $gen:newline
+    ),
+    $gen:newline
+  )
+};
+
+declare function local:get-include-quoted( $include )
+  as xs:string
+{
+  if ( empty( $include/@guard ) )
+  then
+    concat( '#include "', $include/text(), '"' )
+  else
+    concat(
+      '#ifdef ', $include/@guard, $gen:newline,
+      '#include "', $include/text(), '"', $gen:newline,
+      '#endif'
+    )
+};
+
+declare function local:process-iter( $iter )
+  as xs:string
+{
+  concat(
+    if ( exists( $iter/@preprocessorGuard ) )
+    then $iter/@preprocessorGuard
+    else '',
+    $gen:newline,
+
+    '// &lt;',$iter/@name,'&gt;',$gen:newline,
+
+    'void ProfileVisitor::beginVisit( ', $iter/@name, ' const &amp;iter ) {', $gen:newline,
+    '}', $gen:newline,
+    $gen:newline,
+    'void ProfileVisitor::endVisit( ',$iter/@name, ' const &amp; ) {', $gen:newline,
+    '}', $gen:newline,
+    '// &lt;/', $iter/@name, '&gt;', $gen:newline,
+
+    if ( exists( $iter/@preprocessorGuard ) )
+    then concat( $gen:newline, '#endif' )
+    else ''
+  )
+};
+
+declare variable $files as xs:string external;
+
+{
+  variable $temp := local:get-files( $files );
+
+  concat(
+    gen:add-copyright(),
+    local:create-includes( $files ),
+    $gen:newline,
+    'namespace zorba {', $gen:newline,
+    $gen:newline,
+    local:create-class(),
+    $temp,
+    $gen:newline,
+    '} // namespace zorba', $gen:newline
+  )
+}
+
+(: vim:set et sw=2 ts=2: :)

=== added file 'src/runtime/spec/profile_visitor_h.xq'
--- src/runtime/spec/profile_visitor_h.xq	1970-01-01 00:00:00 +0000
+++ src/runtime/spec/profile_visitor_h.xq	2014-02-24 23:33:07 +0000
@@ -0,0 +1,118 @@
+(:
+ : Copyright 2006-2014 The FLWOR Foundation.
+ :
+ : Licensed under the Apache License, Version 2.0 (the "License");
+ : you may not use this file except in compliance with the License.
+ : You may obtain a copy of the License at
+ :
+ : http://www.apache.org/licenses/LICENSE-2.0
+ :
+ : Unless required by applicable law or agreed to in writing, software
+ : distributed under the License is distributed on an "AS IS" BASIS,
+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ : See the License for the specific language governing permissions and
+ : limitations under the License.
+:)
+
+declare namespace zorba = "http://www.zorba-xquery.com";;
+declare namespace ann = "http://zorba.io/annotations";;
+
+import module namespace gen = "http://www.zorba-xquery.com/internal/gen"; at "utils.xq";
+import module namespace file = "http://expath.org/ns/file";;
+
+declare %ann:nondeterministic function local:get-files( $files as xs:string )
+  as xs:string
+{
+  variable $xml-files as xs:string* := tokenize( $files, ',' );
+  variable $temp :=
+    for $file in $xml-files
+    return local:process-file($file);
+
+  string-join( $temp, $gen:newline )
+};
+
+declare %ann:nondeterministic function local:process-file( $file )
+  as xs:string
+{
+  let $doc := fn:parse-xml( file:read-text( $file ) )/zorba:iterators
+  return
+    string-join(
+      for $iter in $doc//zorba:iterator
+      return 
+        if ( fn:not( $iter/@name = "" ) )
+        then local:process-iter( $iter )
+        else (),
+      $gen:newline
+    )
+};
+
+declare function local:process-iter( $iter )
+  as xs:string
+{
+  concat (
+    if ( exists( $iter/@preprocessorGuard ) )
+    then concat( $iter/@preprocessorGuard, $gen:newline )
+    else '',
+
+    concat(
+      $gen:indent, 'void beginVisit( ', $iter/@name, ' const&amp; );', $gen:newline,
+      $gen:indent, 'void endVisit  ( ', $iter/@name, ' const&amp; );'
+    ),
+
+    if ( exists( $iter/@preprocessorGuard ) )
+    then concat( $gen:newline, '#endif' )
+    else ''
+  )
+};
+
+declare function local:create-class()
+  as xs:string
+{
+  concat(
+    'class ProfileVisitor : public PlanIterVisitor {', $gen:newline,
+    'private:', $gen:newline,
+    $gen:indent, 'PlanState &amp;plan_state_;', $gen:newline,
+    'public:', $gen:newline,
+    $gen:indent, 'ProfileVisitor( PlanState &amp;plan_state ) : plan_state_( plan_state ) { }', $gen:newline,
+    $gen:newline,
+    '#include "runtime/visitors/plan_iter_visitor_impl.h"', $gen:newline,
+    $gen:newline
+  )
+};
+
+declare function local:create-fwd-decl() as xs:string
+{
+  concat(
+    'class PlanIterator;', $gen:newline,
+    'class PlanState;', $gen:newline
+  )
+};
+
+(: list all files that need to be included :)
+declare function local:create-includes() as xs:string
+{
+  fn:concat(
+    '#include "runtime/visitors/planiter_visitor.h"', $gen:newline
+  )
+};
+
+declare variable $files as xs:string external;
+
+{
+  variable $temp := local:get-files( $files );
+
+  concat(
+    gen:add-copyright(),
+    gen:add-guard-open( 'runtime_profile_visitor' ), $gen:newline,
+    local:create-includes(),
+    'namespace zorba {', $gen:newline,
+    local:create-fwd-decl(),
+    local:create-class(),
+    $temp, $gen:newline,
+    '};', $gen:newline,
+    '} // namespace zorba', $gen:newline,
+    gen:add-guard-close(), $gen:newline
+  )
+}
+
+(: vim:set et sw=2 ts=2: :)

=== modified file 'src/runtime/store/pregenerated/documents.cpp'
--- src/runtime/store/pregenerated/documents.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/store/pregenerated/documents.cpp	2014-02-24 23:33:07 +0000
@@ -61,6 +61,10 @@
 
 AvailableDocumentsIteratorState::AvailableDocumentsIteratorState() {}
 
+
+zstring AvailableDocumentsIterator::getNameAsString() const {
+  return "zorba-store-documents:available-documents";
+}
 // </AvailableDocumentsIterator>
 
 
@@ -89,6 +93,10 @@
 
 IsAvailableDocumentIterator::~IsAvailableDocumentIterator() {}
 
+
+zstring IsAvailableDocumentIterator::getNameAsString() const {
+  return "zorba-store-documents:is-available-document";
+}
 // </IsAvailableDocumentIterator>
 
 
@@ -117,6 +125,10 @@
 
 PutDocumentIterator::~PutDocumentIterator() {}
 
+
+zstring PutDocumentIterator::getNameAsString() const {
+  return "zorba-store-documents:put";
+}
 // </PutDocumentIterator>
 
 
@@ -145,6 +157,10 @@
 
 RemoveDocumentIterator::~RemoveDocumentIterator() {}
 
+
+zstring RemoveDocumentIterator::getNameAsString() const {
+  return "zorba-store-documents:remove";
+}
 // </RemoveDocumentIterator>
 
 
@@ -173,6 +189,10 @@
 
 RetrieveDocumentIterator::~RetrieveDocumentIterator() {}
 
+
+zstring RetrieveDocumentIterator::getNameAsString() const {
+  return "zorba-store-documents:document";
+}
 // </RetrieveDocumentIterator>
 
 

=== modified file 'src/runtime/store/pregenerated/documents.h'
--- src/runtime/store/pregenerated/documents.h	2014-01-31 01:39:38 +0000
+++ src/runtime/store/pregenerated/documents.h	2014-02-24 23:33:07 +0000
@@ -71,6 +71,8 @@
 
   virtual ~AvailableDocumentsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -101,6 +103,8 @@
 
   virtual ~IsAvailableDocumentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -131,6 +135,8 @@
 
   virtual ~PutDocumentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -161,6 +167,8 @@
 
   virtual ~RemoveDocumentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -191,6 +199,8 @@
 
   virtual ~RetrieveDocumentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/store/pregenerated/maps.cpp'
--- src/runtime/store/pregenerated/maps.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/store/pregenerated/maps.cpp	2014-02-24 23:33:07 +0000
@@ -60,6 +60,10 @@
 
 MapCreateIterator::~MapCreateIterator() {}
 
+
+zstring MapCreateIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:create";
+}
 // </MapCreateIterator>
 
 
@@ -88,6 +92,10 @@
 
 MapDropIterator::~MapDropIterator() {}
 
+
+zstring MapDropIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:drop";
+}
 // </MapDropIterator>
 
 
@@ -128,6 +136,10 @@
 void MapGetIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring MapGetIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:get";
+}
 // </MapGetIterator>
 
 
@@ -156,6 +168,10 @@
 
 MapInsertIterator::~MapInsertIterator() {}
 
+
+zstring MapInsertIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:insert";
+}
 // </MapInsertIterator>
 
 
@@ -184,6 +200,10 @@
 
 MapDeleteIterator::~MapDeleteIterator() {}
 
+
+zstring MapDeleteIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:delete";
+}
 // </MapDeleteIterator>
 
 
@@ -224,6 +244,10 @@
 void MapKeysIteratorState::reset(PlanState& planState) {
   PlanIteratorState::reset(planState);
 }
+
+zstring MapKeysIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:keys";
+}
 // </MapKeysIterator>
 
 
@@ -252,6 +276,10 @@
 
 MapSizeIterator::~MapSizeIterator() {}
 
+
+zstring MapSizeIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:size";
+}
 // </MapSizeIterator>
 
 
@@ -282,6 +310,10 @@
 
 AvailableMapsIteratorState::AvailableMapsIteratorState() {}
 
+
+zstring AvailableMapsIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:available-maps";
+}
 // </AvailableMapsIterator>
 
 
@@ -310,6 +342,10 @@
 
 MapOptionsIterator::~MapOptionsIterator() {}
 
+
+zstring MapOptionsIterator::getNameAsString() const {
+  return "zorba-store-unordered-maps:options";
+}
 // </MapOptionsIterator>
 
 

=== modified file 'src/runtime/store/pregenerated/maps.h'
--- src/runtime/store/pregenerated/maps.h	2014-01-31 01:39:38 +0000
+++ src/runtime/store/pregenerated/maps.h	2014-02-24 23:33:07 +0000
@@ -61,6 +61,8 @@
 
   virtual ~MapCreateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -92,6 +94,8 @@
 
   virtual ~MapDropIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -137,6 +141,8 @@
 
   virtual ~MapGetIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -168,6 +174,8 @@
 
   virtual ~MapInsertIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -199,6 +207,8 @@
 
   virtual ~MapDeleteIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -243,6 +253,8 @@
 
   virtual ~MapKeysIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -274,6 +286,8 @@
 
   virtual ~MapSizeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -320,6 +334,8 @@
 
   virtual ~AvailableMapsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -351,6 +367,8 @@
 
   virtual ~MapOptionsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/strings/pregenerated/strings.cpp'
--- src/runtime/strings/pregenerated/strings.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/strings/pregenerated/strings.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 CodepointsToStringIterator::~CodepointsToStringIterator() {}
 
+
+zstring CodepointsToStringIterator::getNameAsString() const {
+  return "fn:codepoints-to-string";
+}
 // </CodepointsToStringIterator>
 
 
@@ -90,6 +94,10 @@
 
 StringToCodepointsIteratorState::~StringToCodepointsIteratorState() {}
 
+
+zstring StringToCodepointsIterator::getNameAsString() const {
+  return "fn:string-to-codepoints";
+}
 // </StringToCodepointsIterator>
 
 
@@ -118,6 +126,10 @@
 
 CompareStrIterator::~CompareStrIterator() {}
 
+
+zstring CompareStrIterator::getNameAsString() const {
+  return "fn:compare";
+}
 // </CompareStrIterator>
 
 
@@ -146,6 +158,10 @@
 
 CodepointEqualIterator::~CodepointEqualIterator() {}
 
+
+zstring CodepointEqualIterator::getNameAsString() const {
+  return "fn:codepoint-equal";
+}
 // </CodepointEqualIterator>
 
 
@@ -174,6 +190,10 @@
 
 ConcatStrIterator::~ConcatStrIterator() {}
 
+
+zstring ConcatStrIterator::getNameAsString() const {
+  return "fn:concat";
+}
 // </ConcatStrIterator>
 
 
@@ -202,6 +222,10 @@
 
 StringJoinIterator::~StringJoinIterator() {}
 
+
+zstring StringJoinIterator::getNameAsString() const {
+  return "fn:string-join";
+}
 // </StringJoinIterator>
 
 
@@ -230,6 +254,10 @@
 
 SubstringIterator::~SubstringIterator() {}
 
+
+zstring SubstringIterator::getNameAsString() const {
+  return "fn:substring";
+}
 // </SubstringIterator>
 
 
@@ -258,6 +286,10 @@
 
 SubstringIntOptIterator::~SubstringIntOptIterator() {}
 
+
+zstring SubstringIntOptIterator::getNameAsString() const {
+  return "op:substring_int";
+}
 // </SubstringIntOptIterator>
 
 
@@ -286,6 +318,10 @@
 
 StringLengthIterator::~StringLengthIterator() {}
 
+
+zstring StringLengthIterator::getNameAsString() const {
+  return "fn:string-length";
+}
 // </StringLengthIterator>
 
 
@@ -314,6 +350,10 @@
 
 NormalizeSpaceIterator::~NormalizeSpaceIterator() {}
 
+
+zstring NormalizeSpaceIterator::getNameAsString() const {
+  return "fn:normalize-space";
+}
 // </NormalizeSpaceIterator>
 
 
@@ -342,6 +382,10 @@
 
 NormalizeUnicodeIterator::~NormalizeUnicodeIterator() {}
 
+
+zstring NormalizeUnicodeIterator::getNameAsString() const {
+  return "fn:normalize-unicode";
+}
 // </NormalizeUnicodeIterator>
 
 
@@ -370,6 +414,10 @@
 
 UpperCaseIterator::~UpperCaseIterator() {}
 
+
+zstring UpperCaseIterator::getNameAsString() const {
+  return "fn:upper-case";
+}
 // </UpperCaseIterator>
 
 
@@ -398,6 +446,10 @@
 
 LowerCaseIterator::~LowerCaseIterator() {}
 
+
+zstring LowerCaseIterator::getNameAsString() const {
+  return "fn:lower-case";
+}
 // </LowerCaseIterator>
 
 
@@ -426,6 +478,10 @@
 
 TranslateIterator::~TranslateIterator() {}
 
+
+zstring TranslateIterator::getNameAsString() const {
+  return "fn:translate";
+}
 // </TranslateIterator>
 
 
@@ -454,6 +510,10 @@
 
 EncodeForUriIterator::~EncodeForUriIterator() {}
 
+
+zstring EncodeForUriIterator::getNameAsString() const {
+  return "fn:encode-for-uri";
+}
 // </EncodeForUriIterator>
 
 
@@ -482,6 +542,10 @@
 
 IriToUriIterator::~IriToUriIterator() {}
 
+
+zstring IriToUriIterator::getNameAsString() const {
+  return "fn:iri-to-uri";
+}
 // </IriToUriIterator>
 
 
@@ -510,6 +574,10 @@
 
 EscapeHtmlUriIterator::~EscapeHtmlUriIterator() {}
 
+
+zstring EscapeHtmlUriIterator::getNameAsString() const {
+  return "fn:escape-html-uri";
+}
 // </EscapeHtmlUriIterator>
 
 
@@ -538,6 +606,10 @@
 
 ContainsIterator::~ContainsIterator() {}
 
+
+zstring ContainsIterator::getNameAsString() const {
+  return "fn:contains";
+}
 // </ContainsIterator>
 
 
@@ -566,6 +638,10 @@
 
 StartsWithIterator::~StartsWithIterator() {}
 
+
+zstring StartsWithIterator::getNameAsString() const {
+  return "fn:starts-with";
+}
 // </StartsWithIterator>
 
 
@@ -594,6 +670,10 @@
 
 EndsWithIterator::~EndsWithIterator() {}
 
+
+zstring EndsWithIterator::getNameAsString() const {
+  return "fn:ends-with";
+}
 // </EndsWithIterator>
 
 
@@ -622,6 +702,10 @@
 
 SubstringBeforeIterator::~SubstringBeforeIterator() {}
 
+
+zstring SubstringBeforeIterator::getNameAsString() const {
+  return "fn:substring-before";
+}
 // </SubstringBeforeIterator>
 
 
@@ -650,6 +734,10 @@
 
 SubstringAfterIterator::~SubstringAfterIterator() {}
 
+
+zstring SubstringAfterIterator::getNameAsString() const {
+  return "fn:substring-after";
+}
 // </SubstringAfterIterator>
 
 
@@ -678,6 +766,10 @@
 
 FnMatchesIterator::~FnMatchesIterator() {}
 
+
+zstring FnMatchesIterator::getNameAsString() const {
+  return "fn:matches";
+}
 // </FnMatchesIterator>
 
 
@@ -706,6 +798,10 @@
 
 FnReplaceIterator::~FnReplaceIterator() {}
 
+
+zstring FnReplaceIterator::getNameAsString() const {
+  return "fn:replace";
+}
 // </FnReplaceIterator>
 
 
@@ -744,6 +840,10 @@
   start_pos = 0;
   hasmatched = false;
 }
+
+zstring FnTokenizeIterator::getNameAsString() const {
+  return "fn:tokenize";
+}
 // </FnTokenizeIterator>
 
 
@@ -772,6 +872,10 @@
 
 FnAnalyzeStringIterator::~FnAnalyzeStringIterator() {}
 
+
+zstring FnAnalyzeStringIterator::getNameAsString() const {
+  return "fn:analyze-string";
+}
 // </FnAnalyzeStringIterator>
 
 
@@ -800,6 +904,10 @@
 
 StringAnalyzeStringIterator::~StringAnalyzeStringIterator() {}
 
+
+zstring StringAnalyzeStringIterator::getNameAsString() const {
+  return "fn-zorba-string:analyze-string";
+}
 // </StringAnalyzeStringIterator>
 
 
@@ -828,6 +936,10 @@
 
 StringMaterializeIterator::~StringMaterializeIterator() {}
 
+
+zstring StringMaterializeIterator::getNameAsString() const {
+  return "fn-zorba-string:materialize";
+}
 // </StringMaterializeIterator>
 
 
@@ -856,6 +968,10 @@
 
 StringIsStreamableIterator::~StringIsStreamableIterator() {}
 
+
+zstring StringIsStreamableIterator::getNameAsString() const {
+  return "fn-zorba-string:is-streamable";
+}
 // </StringIsStreamableIterator>
 
 
@@ -884,6 +1000,10 @@
 
 StringIsSeekableIterator::~StringIsSeekableIterator() {}
 
+
+zstring StringIsSeekableIterator::getNameAsString() const {
+  return "fn-zorba-string:is-seekable";
+}
 // </StringIsSeekableIterator>
 
 
@@ -926,6 +1046,10 @@
   PlanIteratorState::reset(planState);
   theNextStartPos = 0;
 }
+
+zstring StringSplitIterator::getNameAsString() const {
+  return "fn-zorba-string:split";
+}
 // </StringSplitIterator>
 
 

=== modified file 'src/runtime/strings/pregenerated/strings.h'
--- src/runtime/strings/pregenerated/strings.h	2014-01-31 01:39:38 +0000
+++ src/runtime/strings/pregenerated/strings.h	2014-02-24 23:33:07 +0000
@@ -62,6 +62,8 @@
 
   virtual ~CodepointsToStringIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -110,6 +112,8 @@
 
   virtual ~StringToCodepointsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -142,6 +146,8 @@
 
   virtual ~CompareStrIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -174,6 +180,8 @@
 
   virtual ~CodepointEqualIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -206,6 +214,8 @@
 
   virtual ~ConcatStrIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -238,6 +248,8 @@
 
   virtual ~StringJoinIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -270,6 +282,8 @@
 
   virtual ~SubstringIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -302,6 +316,8 @@
 
   virtual ~SubstringIntOptIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -334,6 +350,8 @@
 
   virtual ~StringLengthIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -366,6 +384,8 @@
 
   virtual ~NormalizeSpaceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -398,6 +418,8 @@
 
   virtual ~NormalizeUnicodeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -430,6 +452,8 @@
 
   virtual ~UpperCaseIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -462,6 +486,8 @@
 
   virtual ~LowerCaseIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -494,6 +520,8 @@
 
   virtual ~TranslateIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -526,6 +554,8 @@
 
   virtual ~EncodeForUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -558,6 +588,8 @@
 
   virtual ~IriToUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -590,6 +622,8 @@
 
   virtual ~EscapeHtmlUriIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -622,6 +656,8 @@
 
   virtual ~ContainsIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -654,6 +690,8 @@
 
   virtual ~StartsWithIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -686,6 +724,8 @@
 
   virtual ~EndsWithIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -718,6 +758,8 @@
 
   virtual ~SubstringBeforeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -750,6 +792,8 @@
 
   virtual ~SubstringAfterIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -782,6 +826,8 @@
 
   virtual ~FnMatchesIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -814,6 +860,8 @@
 
   virtual ~FnReplaceIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -863,6 +911,8 @@
 
   virtual ~FnTokenizeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -895,6 +945,8 @@
 
   virtual ~FnAnalyzeStringIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -927,6 +979,8 @@
 
   virtual ~StringAnalyzeStringIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -959,6 +1013,8 @@
 
   virtual ~StringMaterializeIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -991,6 +1047,8 @@
 
   virtual ~StringIsStreamableIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1023,6 +1081,8 @@
 
   virtual ~StringIsSeekableIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -1071,6 +1131,8 @@
 
   virtual ~StringSplitIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/update/update.cpp'
--- src/runtime/update/update.cpp	2013-12-04 14:28:07 +0000
+++ src/runtime/update/update.cpp	2014-02-24 23:33:07 +0000
@@ -50,16 +50,21 @@
 {
 
 SERIALIZABLE_CLASS_VERSIONS(InsertIterator)
+DEF_GET_NAME_AS_STRING(InsertIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(DeleteIterator)
+DEF_GET_NAME_AS_STRING(DeleteIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(ReplaceIterator)
+DEF_GET_NAME_AS_STRING(ReplaceIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(RenameIterator)
+DEF_GET_NAME_AS_STRING(RenameIterator)
 
 SERIALIZABLE_CLASS_VERSIONS(CopyClause)
 
 SERIALIZABLE_CLASS_VERSIONS(TransformIterator)
+DEF_GET_NAME_AS_STRING(TransformIterator)
 
 
 void areNodeModifiersViolated(

=== modified file 'src/runtime/update/update.h'
--- src/runtime/update/update.h	2013-05-28 18:20:54 +0000
+++ src/runtime/update/update.h	2014-02-24 23:33:07 +0000
@@ -64,6 +64,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t&, PlanState&) const;
 };
 
@@ -105,6 +107,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t&, PlanState&) const;
 };
 
@@ -139,6 +143,8 @@
 
   void accept(PlanIterVisitor& v) const;
 
+  zstring getNameAsString() const;
+
   bool nextImpl(store::Item_t&, PlanState&) const;
 };
 
@@ -201,6 +207,8 @@
 
   ~TransformIterator();
 
+  zstring getNameAsString() const;
+
   uint32_t getStateSize() const { return sizeof(PlanIteratorState); }
 
   uint32_t getStateSizeOfSubtree() const;

=== modified file 'src/runtime/uris/pregenerated/uris.cpp'
--- src/runtime/uris/pregenerated/uris.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/uris/pregenerated/uris.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 DecodeURIIterator::~DecodeURIIterator() {}
 
+
+zstring DecodeURIIterator::getNameAsString() const {
+  return "fn-zorba-uri:decode";
+}
 // </DecodeURIIterator>
 
 
@@ -86,6 +90,10 @@
 
 ParseURIIterator::~ParseURIIterator() {}
 
+
+zstring ParseURIIterator::getNameAsString() const {
+  return "fn-zorba-uri:parse";
+}
 // </ParseURIIterator>
 
 
@@ -114,6 +122,10 @@
 
 SerializeURIIterator::~SerializeURIIterator() {}
 
+
+zstring SerializeURIIterator::getNameAsString() const {
+  return "fn-zorba-uri:serialize";
+}
 // </SerializeURIIterator>
 
 

=== modified file 'src/runtime/uris/pregenerated/uris.h'
--- src/runtime/uris/pregenerated/uris.h	2014-01-31 01:39:38 +0000
+++ src/runtime/uris/pregenerated/uris.h	2014-02-24 23:33:07 +0000
@@ -62,6 +62,8 @@
 
   virtual ~DecodeURIIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -94,6 +96,8 @@
 
   virtual ~ParseURIIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
@@ -126,6 +130,8 @@
 
   virtual ~SerializeURIIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.h'
--- src/runtime/visitors/pregenerated/printer_visitor.h	2014-01-31 01:39:38 +0000
+++ src/runtime/visitors/pregenerated/printer_visitor.h	2014-02-24 23:33:07 +0000
@@ -32,17 +32,22 @@
 namespace zorba {
 
   class PlanIterator;
+  class PlanState;
   class IterPrinter;
 
+
   class PrinterVisitor : public PlanIterVisitor {
   private:
     IterPrinter& thePrinter;
     PlanIterator* theIterator;
+    PlanState* thePlanState;
     int theId;
   public:
-    PrinterVisitor(IterPrinter& aPrinter, PlanIterator* aIter)
-    :    thePrinter(aPrinter), theIterator(aIter), theId(0) {}
+    PrinterVisitor(IterPrinter& aPrinter, PlanIterator* aIter, PlanState *state = 0 )
+    :    thePrinter(aPrinter), theIterator(aIter), thePlanState( state ), theId(0) {}
 
+    PlanState* getPlanState() const { return thePlanState; }
+    void setPlanState( PlanState *s ) { thePlanState = s; }
     void print();
     void printCommons(const PlanIterator* aIter, int theId);
 

=== added file 'src/runtime/visitors/pregenerated/profile_visitor.cpp'
--- src/runtime/visitors/pregenerated/profile_visitor.cpp	1970-01-01 00:00:00 +0000
+++ src/runtime/visitors/pregenerated/profile_visitor.cpp	2014-02-24 23:33:07 +0000
@@ -0,0 +1,3230 @@
+/*
+ * Copyright 2006-2012 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+#include "stdafx.h"
+#include "runtime/visitors/profile_visitor.h"
+#include "runtime/visitors/planiter_visitor.h"
+#include <zorba/properties.h>
+#include "util/string_util.h"
+#include "runtime/accessors/accessors.h"
+#include "runtime/any_uri/any_uri.h"
+#include "runtime/base64/base64.h"
+#include "runtime/booleans/booleans.h"
+#include "runtime/collections/collections.h"
+#include "runtime/context/context.h"
+#include "runtime/csv/csv.h"
+#include "runtime/datetime/datetime.h"
+#include "runtime/debug/debug_iterator.h"
+#include "runtime/durations_dates_times/durations_dates_times.h"
+#include "runtime/errors_and_diagnostics/errors_and_diagnostics.h"
+#include "runtime/errors_and_diagnostics/other_diagnostics.h"
+#include "runtime/fetch/fetch.h"
+#include "runtime/fnput/fnput.h"
+#include "runtime/full_text/ft_module.h"
+#include "runtime/hof/fn_hof_functions.h"
+#include "runtime/indexing/ic_ddl.h"
+#include "runtime/indexing/index_func.h"
+#include "runtime/item/item.h"
+#include "runtime/json/json.h"
+#include "runtime/json/jsoniq_functions.h"
+#include "runtime/jsound/jsound.h"
+#include "runtime/maths/maths.h"
+#include "runtime/nodes/node_position.h"
+#include "runtime/nodes/nodes.h"
+#include "runtime/numerics/numerics.h"
+#include "runtime/parsing_and_serializing/parse_fragment.h"
+#include "runtime/parsing_and_serializing/parsing_and_serializing.h"
+#include "runtime/qnames/qnames.h"
+#include "runtime/random/random.h"
+#include "runtime/reference/reference.h"
+#include "runtime/schema/schema.h"
+#include "runtime/sctx/sctx.h"
+#include "runtime/seq/seq.h"
+#include "runtime/sequences/sequences.h"
+#include "runtime/store/documents.h"
+#include "runtime/store/maps.h"
+#include "runtime/strings/strings.h"
+#include "runtime/uris/uris.h"
+#include "runtime/xqdoc/xqdoc.h"
+
+namespace zorba {
+
+#include "runtime/visitors/plan_iter_visitor_impl.h"
+
+// <NodeNameIterator>
+void ProfileVisitor::beginVisit( NodeNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NodeNameIterator const & ) {
+}
+// </NodeNameIterator>
+
+
+// <NilledIterator>
+void ProfileVisitor::beginVisit( NilledIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NilledIterator const & ) {
+}
+// </NilledIterator>
+
+
+// <FnStringIterator>
+void ProfileVisitor::beginVisit( FnStringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnStringIterator const & ) {
+}
+// </FnStringIterator>
+
+
+// <FnDataIterator>
+void ProfileVisitor::beginVisit( FnDataIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnDataIterator const & ) {
+}
+// </FnDataIterator>
+
+
+// <BaseUriIterator>
+void ProfileVisitor::beginVisit( BaseUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( BaseUriIterator const & ) {
+}
+// </BaseUriIterator>
+
+
+// <DocumentUriIterator>
+void ProfileVisitor::beginVisit( DocumentUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DocumentUriIterator const & ) {
+}
+// </DocumentUriIterator>
+
+
+// <RootIterator>
+void ProfileVisitor::beginVisit( RootIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RootIterator const & ) {
+}
+// </RootIterator>
+
+
+// <ResolveUriIterator>
+void ProfileVisitor::beginVisit( ResolveUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ResolveUriIterator const & ) {
+}
+// </ResolveUriIterator>
+
+
+// <Base64DecodeIterator>
+void ProfileVisitor::beginVisit( Base64DecodeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Base64DecodeIterator const & ) {
+}
+// </Base64DecodeIterator>
+
+
+// <Base64EncodeIterator>
+void ProfileVisitor::beginVisit( Base64EncodeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Base64EncodeIterator const & ) {
+}
+// </Base64EncodeIterator>
+
+
+// <IsSameNodeIterator>
+void ProfileVisitor::beginVisit( IsSameNodeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsSameNodeIterator const & ) {
+}
+// </IsSameNodeIterator>
+
+
+// <NodeBeforeIterator>
+void ProfileVisitor::beginVisit( NodeBeforeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NodeBeforeIterator const & ) {
+}
+// </NodeBeforeIterator>
+
+
+// <NodeAfterIterator>
+void ProfileVisitor::beginVisit( NodeAfterIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NodeAfterIterator const & ) {
+}
+// </NodeAfterIterator>
+
+
+// <ZorbaCreateCollectionIterator>
+void ProfileVisitor::beginVisit( ZorbaCreateCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaCreateCollectionIterator const & ) {
+}
+// </ZorbaCreateCollectionIterator>
+
+
+// <ZorbaDeleteCollectionIterator>
+void ProfileVisitor::beginVisit( ZorbaDeleteCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaDeleteCollectionIterator const & ) {
+}
+// </ZorbaDeleteCollectionIterator>
+
+
+// <IsAvailableCollectionIterator>
+void ProfileVisitor::beginVisit( IsAvailableCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAvailableCollectionIterator const & ) {
+}
+// </IsAvailableCollectionIterator>
+
+
+// <AvailableCollectionsIterator>
+void ProfileVisitor::beginVisit( AvailableCollectionsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AvailableCollectionsIterator const & ) {
+}
+// </AvailableCollectionsIterator>
+
+
+// <FnCollectionIterator>
+void ProfileVisitor::beginVisit( FnCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnCollectionIterator const & ) {
+}
+// </FnCollectionIterator>
+
+
+// <ZorbaCollectionIterator>
+void ProfileVisitor::beginVisit( ZorbaCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaCollectionIterator const & ) {
+}
+// </ZorbaCollectionIterator>
+
+
+// <ZorbaCollectionNameIterator>
+void ProfileVisitor::beginVisit( ZorbaCollectionNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaCollectionNameIterator const & ) {
+}
+// </ZorbaCollectionNameIterator>
+
+
+// <ZorbaIndexOfIterator>
+void ProfileVisitor::beginVisit( ZorbaIndexOfIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaIndexOfIterator const & ) {
+}
+// </ZorbaIndexOfIterator>
+
+
+// <ZorbaDeleteIterator>
+void ProfileVisitor::beginVisit( ZorbaDeleteIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaDeleteIterator const & ) {
+}
+// </ZorbaDeleteIterator>
+
+
+// <ZorbaDeleteFirstIterator>
+void ProfileVisitor::beginVisit( ZorbaDeleteFirstIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaDeleteFirstIterator const & ) {
+}
+// </ZorbaDeleteFirstIterator>
+
+
+// <ZorbaDeleteLastIterator>
+void ProfileVisitor::beginVisit( ZorbaDeleteLastIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaDeleteLastIterator const & ) {
+}
+// </ZorbaDeleteLastIterator>
+
+
+// <ZorbaEditIterator>
+void ProfileVisitor::beginVisit( ZorbaEditIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaEditIterator const & ) {
+}
+// </ZorbaEditIterator>
+
+
+// <ZorbaTruncateCollectionIterator>
+void ProfileVisitor::beginVisit( ZorbaTruncateCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaTruncateCollectionIterator const & ) {
+}
+// </ZorbaTruncateCollectionIterator>
+
+
+// <IsAvailableIndexIterator>
+void ProfileVisitor::beginVisit( IsAvailableIndexIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAvailableIndexIterator const & ) {
+}
+// </IsAvailableIndexIterator>
+
+
+// <AvailableIndexesIterator>
+void ProfileVisitor::beginVisit( AvailableIndexesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AvailableIndexesIterator const & ) {
+}
+// </AvailableIndexesIterator>
+
+
+// <IsActivatedICIterator>
+void ProfileVisitor::beginVisit( IsActivatedICIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsActivatedICIterator const & ) {
+}
+// </IsActivatedICIterator>
+
+
+// <ActivatedICsIterator>
+void ProfileVisitor::beginVisit( ActivatedICsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ActivatedICsIterator const & ) {
+}
+// </ActivatedICsIterator>
+
+
+// <IsDeclaredCollectionIterator>
+void ProfileVisitor::beginVisit( IsDeclaredCollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDeclaredCollectionIterator const & ) {
+}
+// </IsDeclaredCollectionIterator>
+
+
+// <DeclaredCollectionsIterator>
+void ProfileVisitor::beginVisit( DeclaredCollectionsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DeclaredCollectionsIterator const & ) {
+}
+// </DeclaredCollectionsIterator>
+
+
+// <IsDeclaredIndexIterator>
+void ProfileVisitor::beginVisit( IsDeclaredIndexIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDeclaredIndexIterator const & ) {
+}
+// </IsDeclaredIndexIterator>
+
+
+// <DeclaredIndexesIterator>
+void ProfileVisitor::beginVisit( DeclaredIndexesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DeclaredIndexesIterator const & ) {
+}
+// </DeclaredIndexesIterator>
+
+
+// <IsDeclaredICIterator>
+void ProfileVisitor::beginVisit( IsDeclaredICIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDeclaredICIterator const & ) {
+}
+// </IsDeclaredICIterator>
+
+
+// <DeclaredICsIterator>
+void ProfileVisitor::beginVisit( DeclaredICsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DeclaredICsIterator const & ) {
+}
+// </DeclaredICsIterator>
+
+
+// <FnURICollectionIterator>
+void ProfileVisitor::beginVisit( FnURICollectionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnURICollectionIterator const & ) {
+}
+// </FnURICollectionIterator>
+
+
+// <CurrentDateTimeIterator>
+void ProfileVisitor::beginVisit( CurrentDateTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentDateTimeIterator const & ) {
+}
+// </CurrentDateTimeIterator>
+
+
+// <CurrentDateIterator>
+void ProfileVisitor::beginVisit( CurrentDateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentDateIterator const & ) {
+}
+// </CurrentDateIterator>
+
+
+// <CurrentTimeIterator>
+void ProfileVisitor::beginVisit( CurrentTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentTimeIterator const & ) {
+}
+// </CurrentTimeIterator>
+
+
+// <ImplicitTimezoneIterator>
+void ProfileVisitor::beginVisit( ImplicitTimezoneIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ImplicitTimezoneIterator const & ) {
+}
+// </ImplicitTimezoneIterator>
+
+
+// <DefaultCollationIterator>
+void ProfileVisitor::beginVisit( DefaultCollationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DefaultCollationIterator const & ) {
+}
+// </DefaultCollationIterator>
+
+
+// <CsvParseIterator>
+void ProfileVisitor::beginVisit( CsvParseIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CsvParseIterator const & ) {
+}
+// </CsvParseIterator>
+
+
+// <CsvSerializeIterator>
+void ProfileVisitor::beginVisit( CsvSerializeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CsvSerializeIterator const & ) {
+}
+// </CsvSerializeIterator>
+
+
+// <CurrentDate>
+void ProfileVisitor::beginVisit( CurrentDate const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentDate const & ) {
+}
+// </CurrentDate>
+
+
+// <CurrentDateTime>
+void ProfileVisitor::beginVisit( CurrentDateTime const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentDateTime const & ) {
+}
+// </CurrentDateTime>
+
+
+// <CurrentTime>
+void ProfileVisitor::beginVisit( CurrentTime const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentTime const & ) {
+}
+// </CurrentTime>
+
+
+// <MillisToDateTime>
+void ProfileVisitor::beginVisit( MillisToDateTime const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MillisToDateTime const & ) {
+}
+// </MillisToDateTime>
+
+
+// <ParseDate>
+void ProfileVisitor::beginVisit( ParseDate const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ParseDate const & ) {
+}
+// </ParseDate>
+
+
+// <ParseDateTime>
+void ProfileVisitor::beginVisit( ParseDateTime const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ParseDateTime const & ) {
+}
+// </ParseDateTime>
+
+
+// <ParseTime>
+void ProfileVisitor::beginVisit( ParseTime const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ParseTime const & ) {
+}
+// </ParseTime>
+
+
+// <Timestamp>
+void ProfileVisitor::beginVisit( Timestamp const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Timestamp const & ) {
+}
+// </Timestamp>
+
+
+// <UTCOffset>
+void ProfileVisitor::beginVisit( UTCOffset const &iter ) {
+}
+
+void ProfileVisitor::endVisit( UTCOffset const & ) {
+}
+// </UTCOffset>
+
+#ifdef ZORBA_WITH_DEBUGGER
+// <DebugIterator>
+void ProfileVisitor::beginVisit( DebugIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DebugIterator const & ) {
+}
+// </DebugIterator>
+
+#endif
+
+// <YearsFromDurationIterator>
+void ProfileVisitor::beginVisit( YearsFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( YearsFromDurationIterator const & ) {
+}
+// </YearsFromDurationIterator>
+
+
+// <MonthsFromDurationIterator>
+void ProfileVisitor::beginVisit( MonthsFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MonthsFromDurationIterator const & ) {
+}
+// </MonthsFromDurationIterator>
+
+
+// <DaysFromDurationIterator>
+void ProfileVisitor::beginVisit( DaysFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DaysFromDurationIterator const & ) {
+}
+// </DaysFromDurationIterator>
+
+
+// <HoursFromDurationIterator>
+void ProfileVisitor::beginVisit( HoursFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HoursFromDurationIterator const & ) {
+}
+// </HoursFromDurationIterator>
+
+
+// <MinutesFromDurationIterator>
+void ProfileVisitor::beginVisit( MinutesFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MinutesFromDurationIterator const & ) {
+}
+// </MinutesFromDurationIterator>
+
+
+// <SecondsFromDurationIterator>
+void ProfileVisitor::beginVisit( SecondsFromDurationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SecondsFromDurationIterator const & ) {
+}
+// </SecondsFromDurationIterator>
+
+
+// <YearFromDatetimeIterator>
+void ProfileVisitor::beginVisit( YearFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( YearFromDatetimeIterator const & ) {
+}
+// </YearFromDatetimeIterator>
+
+
+// <MonthFromDatetimeIterator>
+void ProfileVisitor::beginVisit( MonthFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MonthFromDatetimeIterator const & ) {
+}
+// </MonthFromDatetimeIterator>
+
+
+// <DayFromDatetimeIterator>
+void ProfileVisitor::beginVisit( DayFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DayFromDatetimeIterator const & ) {
+}
+// </DayFromDatetimeIterator>
+
+
+// <HoursFromDatetimeIterator>
+void ProfileVisitor::beginVisit( HoursFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HoursFromDatetimeIterator const & ) {
+}
+// </HoursFromDatetimeIterator>
+
+
+// <MinutesFromDatetimeIterator>
+void ProfileVisitor::beginVisit( MinutesFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MinutesFromDatetimeIterator const & ) {
+}
+// </MinutesFromDatetimeIterator>
+
+
+// <SecondsFromDatetimeIterator>
+void ProfileVisitor::beginVisit( SecondsFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SecondsFromDatetimeIterator const & ) {
+}
+// </SecondsFromDatetimeIterator>
+
+
+// <TimezoneFromDatetimeIterator>
+void ProfileVisitor::beginVisit( TimezoneFromDatetimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TimezoneFromDatetimeIterator const & ) {
+}
+// </TimezoneFromDatetimeIterator>
+
+
+// <YearFromDateIterator>
+void ProfileVisitor::beginVisit( YearFromDateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( YearFromDateIterator const & ) {
+}
+// </YearFromDateIterator>
+
+
+// <MonthFromDateIterator>
+void ProfileVisitor::beginVisit( MonthFromDateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MonthFromDateIterator const & ) {
+}
+// </MonthFromDateIterator>
+
+
+// <DayFromDateIterator>
+void ProfileVisitor::beginVisit( DayFromDateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DayFromDateIterator const & ) {
+}
+// </DayFromDateIterator>
+
+
+// <TimezoneFromDateIterator>
+void ProfileVisitor::beginVisit( TimezoneFromDateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TimezoneFromDateIterator const & ) {
+}
+// </TimezoneFromDateIterator>
+
+
+// <HoursFromTimeIterator>
+void ProfileVisitor::beginVisit( HoursFromTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HoursFromTimeIterator const & ) {
+}
+// </HoursFromTimeIterator>
+
+
+// <MinutesFromTimeIterator>
+void ProfileVisitor::beginVisit( MinutesFromTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MinutesFromTimeIterator const & ) {
+}
+// </MinutesFromTimeIterator>
+
+
+// <SecondsFromTimeIterator>
+void ProfileVisitor::beginVisit( SecondsFromTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SecondsFromTimeIterator const & ) {
+}
+// </SecondsFromTimeIterator>
+
+
+// <TimezoneFromTimeIterator>
+void ProfileVisitor::beginVisit( TimezoneFromTimeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TimezoneFromTimeIterator const & ) {
+}
+// </TimezoneFromTimeIterator>
+
+
+// <ErrorIterator>
+void ProfileVisitor::beginVisit( ErrorIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ErrorIterator const & ) {
+}
+// </ErrorIterator>
+
+
+// <TraceIterator>
+void ProfileVisitor::beginVisit( TraceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TraceIterator const & ) {
+}
+// </TraceIterator>
+
+
+// <ReadLineIterator>
+void ProfileVisitor::beginVisit( ReadLineIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ReadLineIterator const & ) {
+}
+// </ReadLineIterator>
+
+
+// <PrintIterator>
+void ProfileVisitor::beginVisit( PrintIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( PrintIterator const & ) {
+}
+// </PrintIterator>
+
+
+// <FunctionTraceIterator>
+void ProfileVisitor::beginVisit( FunctionTraceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FunctionTraceIterator const & ) {
+}
+// </FunctionTraceIterator>
+
+
+// <FetchContentIterator>
+void ProfileVisitor::beginVisit( FetchContentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FetchContentIterator const & ) {
+}
+// </FetchContentIterator>
+
+
+// <FetchContentBinaryIterator>
+void ProfileVisitor::beginVisit( FetchContentBinaryIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FetchContentBinaryIterator const & ) {
+}
+// </FetchContentBinaryIterator>
+
+
+// <FetchContentTypeIterator>
+void ProfileVisitor::beginVisit( FetchContentTypeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FetchContentTypeIterator const & ) {
+}
+// </FetchContentTypeIterator>
+
+
+// <FnPutIterator>
+void ProfileVisitor::beginVisit( FnPutIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnPutIterator const & ) {
+}
+// </FnPutIterator>
+
+#ifndef ZORBA_NO_FULL_TEXT
+// <CurrentCompareOptionsIterator>
+void ProfileVisitor::beginVisit( CurrentCompareOptionsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentCompareOptionsIterator const & ) {
+}
+// </CurrentCompareOptionsIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <CurrentLangIterator>
+void ProfileVisitor::beginVisit( CurrentLangIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CurrentLangIterator const & ) {
+}
+// </CurrentLangIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <HostLangIterator>
+void ProfileVisitor::beginVisit( HostLangIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HostLangIterator const & ) {
+}
+// </HostLangIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <IsStemLangSupportedIterator>
+void ProfileVisitor::beginVisit( IsStemLangSupportedIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsStemLangSupportedIterator const & ) {
+}
+// </IsStemLangSupportedIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <IsStopWordIterator>
+void ProfileVisitor::beginVisit( IsStopWordIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsStopWordIterator const & ) {
+}
+// </IsStopWordIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <IsStopWordLangSupportedIterator>
+void ProfileVisitor::beginVisit( IsStopWordLangSupportedIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsStopWordLangSupportedIterator const & ) {
+}
+// </IsStopWordLangSupportedIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <IsThesaurusLangSupportedIterator>
+void ProfileVisitor::beginVisit( IsThesaurusLangSupportedIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsThesaurusLangSupportedIterator const & ) {
+}
+// </IsThesaurusLangSupportedIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <IsTokenizerLangSupportedIterator>
+void ProfileVisitor::beginVisit( IsTokenizerLangSupportedIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsTokenizerLangSupportedIterator const & ) {
+}
+// </IsTokenizerLangSupportedIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <StemIterator>
+void ProfileVisitor::beginVisit( StemIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StemIterator const & ) {
+}
+// </StemIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <StripDiacriticsIterator>
+void ProfileVisitor::beginVisit( StripDiacriticsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StripDiacriticsIterator const & ) {
+}
+// </StripDiacriticsIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <ThesaurusLookupIterator>
+void ProfileVisitor::beginVisit( ThesaurusLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ThesaurusLookupIterator const & ) {
+}
+// </ThesaurusLookupIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <TokenizeNodeIterator>
+void ProfileVisitor::beginVisit( TokenizeNodeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TokenizeNodeIterator const & ) {
+}
+// </TokenizeNodeIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <TokenizeNodesIterator>
+void ProfileVisitor::beginVisit( TokenizeNodesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TokenizeNodesIterator const & ) {
+}
+// </TokenizeNodesIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <TokenizerPropertiesIterator>
+void ProfileVisitor::beginVisit( TokenizerPropertiesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TokenizerPropertiesIterator const & ) {
+}
+// </TokenizerPropertiesIterator>
+
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+// <TokenizeStringIterator>
+void ProfileVisitor::beginVisit( TokenizeStringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TokenizeStringIterator const & ) {
+}
+// </TokenizeStringIterator>
+
+#endif
+
+// <FunctionLookupIterator>
+void ProfileVisitor::beginVisit( FunctionLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FunctionLookupIterator const & ) {
+}
+// </FunctionLookupIterator>
+
+
+// <FunctionNameIterator>
+void ProfileVisitor::beginVisit( FunctionNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FunctionNameIterator const & ) {
+}
+// </FunctionNameIterator>
+
+
+// <FunctionArityIterator>
+void ProfileVisitor::beginVisit( FunctionArityIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FunctionArityIterator const & ) {
+}
+// </FunctionArityIterator>
+
+
+// <FnForEachPairIterator>
+void ProfileVisitor::beginVisit( FnForEachPairIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnForEachPairIterator const & ) {
+}
+// </FnForEachPairIterator>
+
+
+// <FnFoldLeftIterator>
+void ProfileVisitor::beginVisit( FnFoldLeftIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnFoldLeftIterator const & ) {
+}
+// </FnFoldLeftIterator>
+
+
+// <ActivateICIterator>
+void ProfileVisitor::beginVisit( ActivateICIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ActivateICIterator const & ) {
+}
+// </ActivateICIterator>
+
+
+// <DeactivateICIterator>
+void ProfileVisitor::beginVisit( DeactivateICIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DeactivateICIterator const & ) {
+}
+// </DeactivateICIterator>
+
+
+// <CheckICIterator>
+void ProfileVisitor::beginVisit( CheckICIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CheckICIterator const & ) {
+}
+// </CheckICIterator>
+
+
+// <IndexKeysIterator>
+void ProfileVisitor::beginVisit( IndexKeysIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IndexKeysIterator const & ) {
+}
+// </IndexKeysIterator>
+
+
+// <MemSizeIterator>
+void ProfileVisitor::beginVisit( MemSizeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MemSizeIterator const & ) {
+}
+// </MemSizeIterator>
+
+
+// <JSONtoXMLInternal>
+void ProfileVisitor::beginVisit( JSONtoXMLInternal const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONtoXMLInternal const & ) {
+}
+// </JSONtoXMLInternal>
+
+
+// <XMLtoJSONInternal>
+void ProfileVisitor::beginVisit( XMLtoJSONInternal const &iter ) {
+}
+
+void ProfileVisitor::endVisit( XMLtoJSONInternal const & ) {
+}
+// </XMLtoJSONInternal>
+
+
+// <JSONDecodeFromRoundtripIterator>
+void ProfileVisitor::beginVisit( JSONDecodeFromRoundtripIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONDecodeFromRoundtripIterator const & ) {
+}
+// </JSONDecodeFromRoundtripIterator>
+
+
+// <JSONEncodeForRoundtripIterator>
+void ProfileVisitor::beginVisit( JSONEncodeForRoundtripIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONEncodeForRoundtripIterator const & ) {
+}
+// </JSONEncodeForRoundtripIterator>
+
+
+// <JSONParseIterator>
+void ProfileVisitor::beginVisit( JSONParseIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONParseIterator const & ) {
+}
+// </JSONParseIterator>
+
+
+// <MultiObjectKeysIterator>
+void ProfileVisitor::beginVisit( MultiObjectKeysIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MultiObjectKeysIterator const & ) {
+}
+// </MultiObjectKeysIterator>
+
+
+// <SingleObjectKeysIterator>
+void ProfileVisitor::beginVisit( SingleObjectKeysIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SingleObjectKeysIterator const & ) {
+}
+// </SingleObjectKeysIterator>
+
+
+// <MultiObjectLookupIterator>
+void ProfileVisitor::beginVisit( MultiObjectLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MultiObjectLookupIterator const & ) {
+}
+// </MultiObjectLookupIterator>
+
+
+// <SingleObjectLookupIterator>
+void ProfileVisitor::beginVisit( SingleObjectLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SingleObjectLookupIterator const & ) {
+}
+// </SingleObjectLookupIterator>
+
+
+// <JSONObjectProjectIterator>
+void ProfileVisitor::beginVisit( JSONObjectProjectIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONObjectProjectIterator const & ) {
+}
+// </JSONObjectProjectIterator>
+
+
+// <JSONObjectTrimIterator>
+void ProfileVisitor::beginVisit( JSONObjectTrimIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONObjectTrimIterator const & ) {
+}
+// </JSONObjectTrimIterator>
+
+
+// <MultiArrayMembersIterator>
+void ProfileVisitor::beginVisit( MultiArrayMembersIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MultiArrayMembersIterator const & ) {
+}
+// </MultiArrayMembersIterator>
+
+
+// <SingleArrayMembersIterator>
+void ProfileVisitor::beginVisit( SingleArrayMembersIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SingleArrayMembersIterator const & ) {
+}
+// </SingleArrayMembersIterator>
+
+
+// <MultiArrayLookupIterator>
+void ProfileVisitor::beginVisit( MultiArrayLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MultiArrayLookupIterator const & ) {
+}
+// </MultiArrayLookupIterator>
+
+
+// <SingleArrayLookupIterator>
+void ProfileVisitor::beginVisit( SingleArrayLookupIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SingleArrayLookupIterator const & ) {
+}
+// </SingleArrayLookupIterator>
+
+
+// <JSONArraySizeIterator>
+void ProfileVisitor::beginVisit( JSONArraySizeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONArraySizeIterator const & ) {
+}
+// </JSONArraySizeIterator>
+
+
+// <JSONArrayFlattenIterator>
+void ProfileVisitor::beginVisit( JSONArrayFlattenIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONArrayFlattenIterator const & ) {
+}
+// </JSONArrayFlattenIterator>
+
+
+// <JSONNullIterator>
+void ProfileVisitor::beginVisit( JSONNullIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONNullIterator const & ) {
+}
+// </JSONNullIterator>
+
+
+// <JSONObjectInsertIterator>
+void ProfileVisitor::beginVisit( JSONObjectInsertIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONObjectInsertIterator const & ) {
+}
+// </JSONObjectInsertIterator>
+
+
+// <JSONArrayInsertIterator>
+void ProfileVisitor::beginVisit( JSONArrayInsertIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONArrayInsertIterator const & ) {
+}
+// </JSONArrayInsertIterator>
+
+
+// <JSONDeleteIterator>
+void ProfileVisitor::beginVisit( JSONDeleteIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONDeleteIterator const & ) {
+}
+// </JSONDeleteIterator>
+
+
+// <JSONReplaceValueIterator>
+void ProfileVisitor::beginVisit( JSONReplaceValueIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONReplaceValueIterator const & ) {
+}
+// </JSONReplaceValueIterator>
+
+
+// <JSONRenameIterator>
+void ProfileVisitor::beginVisit( JSONRenameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONRenameIterator const & ) {
+}
+// </JSONRenameIterator>
+
+
+// <JSONArrayAppendIterator>
+void ProfileVisitor::beginVisit( JSONArrayAppendIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONArrayAppendIterator const & ) {
+}
+// </JSONArrayAppendIterator>
+
+
+// <JSONBoxIterator>
+void ProfileVisitor::beginVisit( JSONBoxIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSONBoxIterator const & ) {
+}
+// </JSONBoxIterator>
+
+
+// <JSoundAnnotateIterator>
+void ProfileVisitor::beginVisit( JSoundAnnotateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSoundAnnotateIterator const & ) {
+}
+// </JSoundAnnotateIterator>
+
+
+// <JSoundValidateIterator>
+void ProfileVisitor::beginVisit( JSoundValidateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( JSoundValidateIterator const & ) {
+}
+// </JSoundValidateIterator>
+
+
+// <SqrtIterator>
+void ProfileVisitor::beginVisit( SqrtIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SqrtIterator const & ) {
+}
+// </SqrtIterator>
+
+
+// <ExpIterator>
+void ProfileVisitor::beginVisit( ExpIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ExpIterator const & ) {
+}
+// </ExpIterator>
+
+
+// <Exp10Iterator>
+void ProfileVisitor::beginVisit( Exp10Iterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Exp10Iterator const & ) {
+}
+// </Exp10Iterator>
+
+
+// <LogIterator>
+void ProfileVisitor::beginVisit( LogIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LogIterator const & ) {
+}
+// </LogIterator>
+
+
+// <Log10Iterator>
+void ProfileVisitor::beginVisit( Log10Iterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Log10Iterator const & ) {
+}
+// </Log10Iterator>
+
+
+// <SinIterator>
+void ProfileVisitor::beginVisit( SinIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SinIterator const & ) {
+}
+// </SinIterator>
+
+
+// <CosIterator>
+void ProfileVisitor::beginVisit( CosIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CosIterator const & ) {
+}
+// </CosIterator>
+
+
+// <TanIterator>
+void ProfileVisitor::beginVisit( TanIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TanIterator const & ) {
+}
+// </TanIterator>
+
+
+// <ArcSinIterator>
+void ProfileVisitor::beginVisit( ArcSinIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ArcSinIterator const & ) {
+}
+// </ArcSinIterator>
+
+
+// <ArcCosIterator>
+void ProfileVisitor::beginVisit( ArcCosIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ArcCosIterator const & ) {
+}
+// </ArcCosIterator>
+
+
+// <ArcTanIterator>
+void ProfileVisitor::beginVisit( ArcTanIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ArcTanIterator const & ) {
+}
+// </ArcTanIterator>
+
+
+// <Atan2Iterator>
+void ProfileVisitor::beginVisit( Atan2Iterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( Atan2Iterator const & ) {
+}
+// </Atan2Iterator>
+
+
+// <CoshIterator>
+void ProfileVisitor::beginVisit( CoshIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CoshIterator const & ) {
+}
+// </CoshIterator>
+
+
+// <AcoshIterator>
+void ProfileVisitor::beginVisit( AcoshIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AcoshIterator const & ) {
+}
+// </AcoshIterator>
+
+
+// <FmodIterator>
+void ProfileVisitor::beginVisit( FmodIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FmodIterator const & ) {
+}
+// </FmodIterator>
+
+
+// <LdexpIterator>
+void ProfileVisitor::beginVisit( LdexpIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LdexpIterator const & ) {
+}
+// </LdexpIterator>
+
+
+// <PowIterator>
+void ProfileVisitor::beginVisit( PowIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( PowIterator const & ) {
+}
+// </PowIterator>
+
+
+// <SinhIterator>
+void ProfileVisitor::beginVisit( SinhIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SinhIterator const & ) {
+}
+// </SinhIterator>
+
+
+// <AsinhIterator>
+void ProfileVisitor::beginVisit( AsinhIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AsinhIterator const & ) {
+}
+// </AsinhIterator>
+
+
+// <TanhIterator>
+void ProfileVisitor::beginVisit( TanhIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TanhIterator const & ) {
+}
+// </TanhIterator>
+
+
+// <AtanhIterator>
+void ProfileVisitor::beginVisit( AtanhIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AtanhIterator const & ) {
+}
+// </AtanhIterator>
+
+
+// <PiNumberIterator>
+void ProfileVisitor::beginVisit( PiNumberIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( PiNumberIterator const & ) {
+}
+// </PiNumberIterator>
+
+
+// <IsInfIterator>
+void ProfileVisitor::beginVisit( IsInfIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsInfIterator const & ) {
+}
+// </IsInfIterator>
+
+
+// <IsNaNIterator>
+void ProfileVisitor::beginVisit( IsNaNIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsNaNIterator const & ) {
+}
+// </IsNaNIterator>
+
+
+// <ModfIterator>
+void ProfileVisitor::beginVisit( ModfIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ModfIterator const & ) {
+}
+// </ModfIterator>
+
+
+// <FrexpIterator>
+void ProfileVisitor::beginVisit( FrexpIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FrexpIterator const & ) {
+}
+// </FrexpIterator>
+
+
+// <NodePositionIterator>
+void ProfileVisitor::beginVisit( NodePositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NodePositionIterator const & ) {
+}
+// </NodePositionIterator>
+
+
+// <IsAncestorPositionIterator>
+void ProfileVisitor::beginVisit( IsAncestorPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAncestorPositionIterator const & ) {
+}
+// </IsAncestorPositionIterator>
+
+
+// <IsFollowingSiblingPositionIterator>
+void ProfileVisitor::beginVisit( IsFollowingSiblingPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsFollowingSiblingPositionIterator const & ) {
+}
+// </IsFollowingSiblingPositionIterator>
+
+
+// <IsFollowingPositionIterator>
+void ProfileVisitor::beginVisit( IsFollowingPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsFollowingPositionIterator const & ) {
+}
+// </IsFollowingPositionIterator>
+
+
+// <IsInSubtreeOfPositionIterator>
+void ProfileVisitor::beginVisit( IsInSubtreeOfPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsInSubtreeOfPositionIterator const & ) {
+}
+// </IsInSubtreeOfPositionIterator>
+
+
+// <IsDescendantPositionIterator>
+void ProfileVisitor::beginVisit( IsDescendantPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDescendantPositionIterator const & ) {
+}
+// </IsDescendantPositionIterator>
+
+
+// <IsPrecedingSiblingPositionIterator>
+void ProfileVisitor::beginVisit( IsPrecedingSiblingPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsPrecedingSiblingPositionIterator const & ) {
+}
+// </IsPrecedingSiblingPositionIterator>
+
+
+// <IsPrecedingPositionIterator>
+void ProfileVisitor::beginVisit( IsPrecedingPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsPrecedingPositionIterator const & ) {
+}
+// </IsPrecedingPositionIterator>
+
+
+// <IsChildPositionIterator>
+void ProfileVisitor::beginVisit( IsChildPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsChildPositionIterator const & ) {
+}
+// </IsChildPositionIterator>
+
+
+// <IsAttributeOfPositionIterator>
+void ProfileVisitor::beginVisit( IsAttributeOfPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAttributeOfPositionIterator const & ) {
+}
+// </IsAttributeOfPositionIterator>
+
+
+// <IsParentPositionIterator>
+void ProfileVisitor::beginVisit( IsParentPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsParentPositionIterator const & ) {
+}
+// </IsParentPositionIterator>
+
+
+// <IsPrecedingInDocumentOrderPositionIterator>
+void ProfileVisitor::beginVisit( IsPrecedingInDocumentOrderPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsPrecedingInDocumentOrderPositionIterator const & ) {
+}
+// </IsPrecedingInDocumentOrderPositionIterator>
+
+
+// <IsFollowingInDocumentOrderPositionIterator>
+void ProfileVisitor::beginVisit( IsFollowingInDocumentOrderPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsFollowingInDocumentOrderPositionIterator const & ) {
+}
+// </IsFollowingInDocumentOrderPositionIterator>
+
+
+// <LevelPositionIterator>
+void ProfileVisitor::beginVisit( LevelPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LevelPositionIterator const & ) {
+}
+// </LevelPositionIterator>
+
+
+// <IsAttributePositionIterator>
+void ProfileVisitor::beginVisit( IsAttributePositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAttributePositionIterator const & ) {
+}
+// </IsAttributePositionIterator>
+
+
+// <IsCommentPositionIterator>
+void ProfileVisitor::beginVisit( IsCommentPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsCommentPositionIterator const & ) {
+}
+// </IsCommentPositionIterator>
+
+
+// <IsDocumentPositionIterator>
+void ProfileVisitor::beginVisit( IsDocumentPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDocumentPositionIterator const & ) {
+}
+// </IsDocumentPositionIterator>
+
+
+// <IsElementPositionIterator>
+void ProfileVisitor::beginVisit( IsElementPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsElementPositionIterator const & ) {
+}
+// </IsElementPositionIterator>
+
+
+// <IsProcessingInstructionPositionIterator>
+void ProfileVisitor::beginVisit( IsProcessingInstructionPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsProcessingInstructionPositionIterator const & ) {
+}
+// </IsProcessingInstructionPositionIterator>
+
+
+// <IsTextPositionIterator>
+void ProfileVisitor::beginVisit( IsTextPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsTextPositionIterator const & ) {
+}
+// </IsTextPositionIterator>
+
+
+// <IsSiblingPositionIterator>
+void ProfileVisitor::beginVisit( IsSiblingPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsSiblingPositionIterator const & ) {
+}
+// </IsSiblingPositionIterator>
+
+
+// <InSameTreePositionIterator>
+void ProfileVisitor::beginVisit( InSameTreePositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( InSameTreePositionIterator const & ) {
+}
+// </InSameTreePositionIterator>
+
+
+// <InCollectionPositionIterator>
+void ProfileVisitor::beginVisit( InCollectionPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( InCollectionPositionIterator const & ) {
+}
+// </InCollectionPositionIterator>
+
+
+// <InSameCollectionPositionIterator>
+void ProfileVisitor::beginVisit( InSameCollectionPositionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( InSameCollectionPositionIterator const & ) {
+}
+// </InSameCollectionPositionIterator>
+
+
+// <FnLocalNameIterator>
+void ProfileVisitor::beginVisit( FnLocalNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnLocalNameIterator const & ) {
+}
+// </FnLocalNameIterator>
+
+
+// <FnNamespaceUriIterator>
+void ProfileVisitor::beginVisit( FnNamespaceUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnNamespaceUriIterator const & ) {
+}
+// </FnNamespaceUriIterator>
+
+
+// <FnLangIterator>
+void ProfileVisitor::beginVisit( FnLangIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnLangIterator const & ) {
+}
+// </FnLangIterator>
+
+
+// <FnHasChildrenIterator>
+void ProfileVisitor::beginVisit( FnHasChildrenIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnHasChildrenIterator const & ) {
+}
+// </FnHasChildrenIterator>
+
+
+// <FnInnermostIterator>
+void ProfileVisitor::beginVisit( FnInnermostIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnInnermostIterator const & ) {
+}
+// </FnInnermostIterator>
+
+
+// <FnOutermostIterator>
+void ProfileVisitor::beginVisit( FnOutermostIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnOutermostIterator const & ) {
+}
+// </FnOutermostIterator>
+
+
+// <FnGenerateIdIterator>
+void ProfileVisitor::beginVisit( FnGenerateIdIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnGenerateIdIterator const & ) {
+}
+// </FnGenerateIdIterator>
+
+
+// <IsAncestorIterator>
+void ProfileVisitor::beginVisit( IsAncestorIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAncestorIterator const & ) {
+}
+// </IsAncestorIterator>
+
+
+// <IsDescendantIterator>
+void ProfileVisitor::beginVisit( IsDescendantIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsDescendantIterator const & ) {
+}
+// </IsDescendantIterator>
+
+
+// <IsParentIterator>
+void ProfileVisitor::beginVisit( IsParentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsParentIterator const & ) {
+}
+// </IsParentIterator>
+
+
+// <IsChildIterator>
+void ProfileVisitor::beginVisit( IsChildIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsChildIterator const & ) {
+}
+// </IsChildIterator>
+
+
+// <IsFollowingIterator>
+void ProfileVisitor::beginVisit( IsFollowingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsFollowingIterator const & ) {
+}
+// </IsFollowingIterator>
+
+
+// <IsPrecedingIterator>
+void ProfileVisitor::beginVisit( IsPrecedingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsPrecedingIterator const & ) {
+}
+// </IsPrecedingIterator>
+
+
+// <IsFollowingSiblingIterator>
+void ProfileVisitor::beginVisit( IsFollowingSiblingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsFollowingSiblingIterator const & ) {
+}
+// </IsFollowingSiblingIterator>
+
+
+// <IsPrecedingSiblingIterator>
+void ProfileVisitor::beginVisit( IsPrecedingSiblingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsPrecedingSiblingIterator const & ) {
+}
+// </IsPrecedingSiblingIterator>
+
+
+// <LevelIterator>
+void ProfileVisitor::beginVisit( LevelIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LevelIterator const & ) {
+}
+// </LevelIterator>
+
+
+// <LeastCommonAncestor>
+void ProfileVisitor::beginVisit( LeastCommonAncestor const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LeastCommonAncestor const & ) {
+}
+// </LeastCommonAncestor>
+
+
+// <FnPathIterator>
+void ProfileVisitor::beginVisit( FnPathIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnPathIterator const & ) {
+}
+// </FnPathIterator>
+
+
+// <NodeCopyIterator>
+void ProfileVisitor::beginVisit( NodeCopyIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NodeCopyIterator const & ) {
+}
+// </NodeCopyIterator>
+
+
+// <AbsIterator>
+void ProfileVisitor::beginVisit( AbsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AbsIterator const & ) {
+}
+// </AbsIterator>
+
+
+// <CeilingIterator>
+void ProfileVisitor::beginVisit( CeilingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CeilingIterator const & ) {
+}
+// </CeilingIterator>
+
+
+// <FloorIterator>
+void ProfileVisitor::beginVisit( FloorIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FloorIterator const & ) {
+}
+// </FloorIterator>
+
+
+// <RoundIterator>
+void ProfileVisitor::beginVisit( RoundIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RoundIterator const & ) {
+}
+// </RoundIterator>
+
+
+// <RoundHalfToEvenIterator>
+void ProfileVisitor::beginVisit( RoundHalfToEvenIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RoundHalfToEvenIterator const & ) {
+}
+// </RoundHalfToEvenIterator>
+
+
+// <FormatNumberIterator>
+void ProfileVisitor::beginVisit( FormatNumberIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FormatNumberIterator const & ) {
+}
+// </FormatNumberIterator>
+
+
+// <FormatIntegerIterator>
+void ProfileVisitor::beginVisit( FormatIntegerIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FormatIntegerIterator const & ) {
+}
+// </FormatIntegerIterator>
+
+
+// <FnZorbaParseXmlFragmentIterator>
+void ProfileVisitor::beginVisit( FnZorbaParseXmlFragmentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnZorbaParseXmlFragmentIterator const & ) {
+}
+// </FnZorbaParseXmlFragmentIterator>
+
+
+// <FnZorbaCanonicalizeIterator>
+void ProfileVisitor::beginVisit( FnZorbaCanonicalizeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnZorbaCanonicalizeIterator const & ) {
+}
+// </FnZorbaCanonicalizeIterator>
+
+
+// <FnParseXmlFragmentIterator>
+void ProfileVisitor::beginVisit( FnParseXmlFragmentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnParseXmlFragmentIterator const & ) {
+}
+// </FnParseXmlFragmentIterator>
+
+
+// <FnParseXmlIterator>
+void ProfileVisitor::beginVisit( FnParseXmlIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnParseXmlIterator const & ) {
+}
+// </FnParseXmlIterator>
+
+
+// <FnSerializeIterator>
+void ProfileVisitor::beginVisit( FnSerializeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSerializeIterator const & ) {
+}
+// </FnSerializeIterator>
+
+
+// <ResolveQNameIterator>
+void ProfileVisitor::beginVisit( ResolveQNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ResolveQNameIterator const & ) {
+}
+// </ResolveQNameIterator>
+
+
+// <QNameIterator>
+void ProfileVisitor::beginVisit( QNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( QNameIterator const & ) {
+}
+// </QNameIterator>
+
+
+// <QNameEqualIterator>
+void ProfileVisitor::beginVisit( QNameEqualIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( QNameEqualIterator const & ) {
+}
+// </QNameEqualIterator>
+
+
+// <PrefixFromQNameIterator>
+void ProfileVisitor::beginVisit( PrefixFromQNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( PrefixFromQNameIterator const & ) {
+}
+// </PrefixFromQNameIterator>
+
+
+// <LocalNameFromQNameIterator>
+void ProfileVisitor::beginVisit( LocalNameFromQNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LocalNameFromQNameIterator const & ) {
+}
+// </LocalNameFromQNameIterator>
+
+
+// <NamespaceUriFromQNameIterator>
+void ProfileVisitor::beginVisit( NamespaceUriFromQNameIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NamespaceUriFromQNameIterator const & ) {
+}
+// </NamespaceUriFromQNameIterator>
+
+
+// <NamespaceUriForPrefixIterator>
+void ProfileVisitor::beginVisit( NamespaceUriForPrefixIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NamespaceUriForPrefixIterator const & ) {
+}
+// </NamespaceUriForPrefixIterator>
+
+
+// <InScopePrefixesIterator>
+void ProfileVisitor::beginVisit( InScopePrefixesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( InScopePrefixesIterator const & ) {
+}
+// </InScopePrefixesIterator>
+
+
+// <SeededRandomIterator>
+void ProfileVisitor::beginVisit( SeededRandomIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SeededRandomIterator const & ) {
+}
+// </SeededRandomIterator>
+
+
+// <RandomIterator>
+void ProfileVisitor::beginVisit( RandomIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RandomIterator const & ) {
+}
+// </RandomIterator>
+
+
+// <UuidIterator>
+void ProfileVisitor::beginVisit( UuidIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( UuidIterator const & ) {
+}
+// </UuidIterator>
+
+
+// <ReferenceIterator>
+void ProfileVisitor::beginVisit( ReferenceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ReferenceIterator const & ) {
+}
+// </ReferenceIterator>
+
+
+// <HasReferenceIterator>
+void ProfileVisitor::beginVisit( HasReferenceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HasReferenceIterator const & ) {
+}
+// </HasReferenceIterator>
+
+
+// <AssignReferenceIterator>
+void ProfileVisitor::beginVisit( AssignReferenceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AssignReferenceIterator const & ) {
+}
+// </AssignReferenceIterator>
+
+
+// <DereferenceIterator>
+void ProfileVisitor::beginVisit( DereferenceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DereferenceIterator const & ) {
+}
+// </DereferenceIterator>
+
+#ifndef ZORBA_NO_XMLSCHEMA
+// <ValidateIterator>
+void ProfileVisitor::beginVisit( ValidateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ValidateIterator const & ) {
+}
+// </ValidateIterator>
+
+#endif
+
+// <ZorbaValidateInPlaceIterator>
+void ProfileVisitor::beginVisit( ZorbaValidateInPlaceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaValidateInPlaceIterator const & ) {
+}
+// </ZorbaValidateInPlaceIterator>
+
+
+// <ZorbaSchemaTypeIterator>
+void ProfileVisitor::beginVisit( ZorbaSchemaTypeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaSchemaTypeIterator const & ) {
+}
+// </ZorbaSchemaTypeIterator>
+
+
+// <ZorbaIsValidatedIterator>
+void ProfileVisitor::beginVisit( ZorbaIsValidatedIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ZorbaIsValidatedIterator const & ) {
+}
+// </ZorbaIsValidatedIterator>
+
+
+// <SctxBaseUriIterator>
+void ProfileVisitor::beginVisit( SctxBaseUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxBaseUriIterator const & ) {
+}
+// </SctxBaseUriIterator>
+
+
+// <SctxBoundarySpacePolicyIterator>
+void ProfileVisitor::beginVisit( SctxBoundarySpacePolicyIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxBoundarySpacePolicyIterator const & ) {
+}
+// </SctxBoundarySpacePolicyIterator>
+
+
+// <SctxConstructionModeIterator>
+void ProfileVisitor::beginVisit( SctxConstructionModeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxConstructionModeIterator const & ) {
+}
+// </SctxConstructionModeIterator>
+
+
+// <SctxCopyNamespacesModeIterator>
+void ProfileVisitor::beginVisit( SctxCopyNamespacesModeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxCopyNamespacesModeIterator const & ) {
+}
+// </SctxCopyNamespacesModeIterator>
+
+
+// <SctxDefaultCollationIterator>
+void ProfileVisitor::beginVisit( SctxDefaultCollationIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxDefaultCollationIterator const & ) {
+}
+// </SctxDefaultCollationIterator>
+
+
+// <SctxDefaultCollectionTypeIterator>
+void ProfileVisitor::beginVisit( SctxDefaultCollectionTypeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxDefaultCollectionTypeIterator const & ) {
+}
+// </SctxDefaultCollectionTypeIterator>
+
+
+// <SctxDefaultFunctionNamespaceIterator>
+void ProfileVisitor::beginVisit( SctxDefaultFunctionNamespaceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxDefaultFunctionNamespaceIterator const & ) {
+}
+// </SctxDefaultFunctionNamespaceIterator>
+
+
+// <SctxDefaultOrderIterator>
+void ProfileVisitor::beginVisit( SctxDefaultOrderIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxDefaultOrderIterator const & ) {
+}
+// </SctxDefaultOrderIterator>
+
+
+// <SctxFunctionAnnotationsIterator>
+void ProfileVisitor::beginVisit( SctxFunctionAnnotationsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxFunctionAnnotationsIterator const & ) {
+}
+// </SctxFunctionAnnotationsIterator>
+
+
+// <SctxFunctionArgumentsCountIterator>
+void ProfileVisitor::beginVisit( SctxFunctionArgumentsCountIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxFunctionArgumentsCountIterator const & ) {
+}
+// </SctxFunctionArgumentsCountIterator>
+
+
+// <SctxFunctionNamesIterator>
+void ProfileVisitor::beginVisit( SctxFunctionNamesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxFunctionNamesIterator const & ) {
+}
+// </SctxFunctionNamesIterator>
+
+
+// <SctxFunctionsIterator>
+void ProfileVisitor::beginVisit( SctxFunctionsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxFunctionsIterator const & ) {
+}
+// </SctxFunctionsIterator>
+
+
+// <SctxInScopeAttributeDeclarationsIterator>
+void ProfileVisitor::beginVisit( SctxInScopeAttributeDeclarationsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInScopeAttributeDeclarationsIterator const & ) {
+}
+// </SctxInScopeAttributeDeclarationsIterator>
+
+
+// <SctxInScopeAttributeGroupsIterator>
+void ProfileVisitor::beginVisit( SctxInScopeAttributeGroupsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInScopeAttributeGroupsIterator const & ) {
+}
+// </SctxInScopeAttributeGroupsIterator>
+
+
+// <SctxInScopeElementDeclarationsIterator>
+void ProfileVisitor::beginVisit( SctxInScopeElementDeclarationsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInScopeElementDeclarationsIterator const & ) {
+}
+// </SctxInScopeElementDeclarationsIterator>
+
+
+// <SctxInScopeElementGroupsIterator>
+void ProfileVisitor::beginVisit( SctxInScopeElementGroupsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInScopeElementGroupsIterator const & ) {
+}
+// </SctxInScopeElementGroupsIterator>
+
+
+// <SctxInScopeSchemaTypesIterator>
+void ProfileVisitor::beginVisit( SctxInScopeSchemaTypesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInScopeSchemaTypesIterator const & ) {
+}
+// </SctxInScopeSchemaTypesIterator>
+
+
+// <SctxInscopeVariablesIterator>
+void ProfileVisitor::beginVisit( SctxInscopeVariablesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxInscopeVariablesIterator const & ) {
+}
+// </SctxInscopeVariablesIterator>
+
+
+// <SctxOptionIterator>
+void ProfileVisitor::beginVisit( SctxOptionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxOptionIterator const & ) {
+}
+// </SctxOptionIterator>
+
+
+// <SctxOrderingModeIterator>
+void ProfileVisitor::beginVisit( SctxOrderingModeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxOrderingModeIterator const & ) {
+}
+// </SctxOrderingModeIterator>
+
+
+// <SctxStaticallyKnownCollationsIterator>
+void ProfileVisitor::beginVisit( SctxStaticallyKnownCollationsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxStaticallyKnownCollationsIterator const & ) {
+}
+// </SctxStaticallyKnownCollationsIterator>
+
+
+// <SctxStaticallyKnownDocumentsIterator>
+void ProfileVisitor::beginVisit( SctxStaticallyKnownDocumentsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxStaticallyKnownDocumentsIterator const & ) {
+}
+// </SctxStaticallyKnownDocumentsIterator>
+
+
+// <SctxStaticallyKnownDocumentTypeIterator>
+void ProfileVisitor::beginVisit( SctxStaticallyKnownDocumentTypeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxStaticallyKnownDocumentTypeIterator const & ) {
+}
+// </SctxStaticallyKnownDocumentTypeIterator>
+
+
+// <SctxStaticallyKnownNamespaceBindingIterator>
+void ProfileVisitor::beginVisit( SctxStaticallyKnownNamespaceBindingIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxStaticallyKnownNamespaceBindingIterator const & ) {
+}
+// </SctxStaticallyKnownNamespaceBindingIterator>
+
+
+// <SctxStaticallyKnownNamespacesIterator>
+void ProfileVisitor::beginVisit( SctxStaticallyKnownNamespacesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxStaticallyKnownNamespacesIterator const & ) {
+}
+// </SctxStaticallyKnownNamespacesIterator>
+
+
+// <SctxXPath10CompatModeIterator>
+void ProfileVisitor::beginVisit( SctxXPath10CompatModeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SctxXPath10CompatModeIterator const & ) {
+}
+// </SctxXPath10CompatModeIterator>
+
+
+// <SeqValueIntersectIterator>
+void ProfileVisitor::beginVisit( SeqValueIntersectIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SeqValueIntersectIterator const & ) {
+}
+// </SeqValueIntersectIterator>
+
+
+// <SeqValueUnionIterator>
+void ProfileVisitor::beginVisit( SeqValueUnionIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SeqValueUnionIterator const & ) {
+}
+// </SeqValueUnionIterator>
+
+
+// <SeqValueExceptIterator>
+void ProfileVisitor::beginVisit( SeqValueExceptIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SeqValueExceptIterator const & ) {
+}
+// </SeqValueExceptIterator>
+
+
+// <FnConcatIterator>
+void ProfileVisitor::beginVisit( FnConcatIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnConcatIterator const & ) {
+}
+// </FnConcatIterator>
+
+
+// <FnIndexOfIterator>
+void ProfileVisitor::beginVisit( FnIndexOfIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnIndexOfIterator const & ) {
+}
+// </FnIndexOfIterator>
+
+
+// <FnEmptyIterator>
+void ProfileVisitor::beginVisit( FnEmptyIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnEmptyIterator const & ) {
+}
+// </FnEmptyIterator>
+
+
+// <FnExistsIterator>
+void ProfileVisitor::beginVisit( FnExistsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnExistsIterator const & ) {
+}
+// </FnExistsIterator>
+
+
+// <FnDistinctValuesIterator>
+void ProfileVisitor::beginVisit( FnDistinctValuesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnDistinctValuesIterator const & ) {
+}
+// </FnDistinctValuesIterator>
+
+
+// <FnInsertBeforeIterator>
+void ProfileVisitor::beginVisit( FnInsertBeforeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnInsertBeforeIterator const & ) {
+}
+// </FnInsertBeforeIterator>
+
+
+// <FnRemoveIterator>
+void ProfileVisitor::beginVisit( FnRemoveIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnRemoveIterator const & ) {
+}
+// </FnRemoveIterator>
+
+
+// <FnReverseIterator>
+void ProfileVisitor::beginVisit( FnReverseIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnReverseIterator const & ) {
+}
+// </FnReverseIterator>
+
+
+// <FnSubsequenceIterator>
+void ProfileVisitor::beginVisit( FnSubsequenceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSubsequenceIterator const & ) {
+}
+// </FnSubsequenceIterator>
+
+
+// <SubsequenceIntIterator>
+void ProfileVisitor::beginVisit( SubsequenceIntIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SubsequenceIntIterator const & ) {
+}
+// </SubsequenceIntIterator>
+
+
+// <SequencePointAccessIterator>
+void ProfileVisitor::beginVisit( SequencePointAccessIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SequencePointAccessIterator const & ) {
+}
+// </SequencePointAccessIterator>
+
+
+// <FnZeroOrOneIterator>
+void ProfileVisitor::beginVisit( FnZeroOrOneIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnZeroOrOneIterator const & ) {
+}
+// </FnZeroOrOneIterator>
+
+
+// <FnOneOrMoreIterator>
+void ProfileVisitor::beginVisit( FnOneOrMoreIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnOneOrMoreIterator const & ) {
+}
+// </FnOneOrMoreIterator>
+
+
+// <FnExactlyOneIterator>
+void ProfileVisitor::beginVisit( FnExactlyOneIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnExactlyOneIterator const & ) {
+}
+// </FnExactlyOneIterator>
+
+
+// <FnDeepEqualIterator>
+void ProfileVisitor::beginVisit( FnDeepEqualIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnDeepEqualIterator const & ) {
+}
+// </FnDeepEqualIterator>
+
+
+// <HashSemiJoinIterator>
+void ProfileVisitor::beginVisit( HashSemiJoinIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( HashSemiJoinIterator const & ) {
+}
+// </HashSemiJoinIterator>
+
+
+// <SortSemiJoinIterator>
+void ProfileVisitor::beginVisit( SortSemiJoinIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SortSemiJoinIterator const & ) {
+}
+// </SortSemiJoinIterator>
+
+
+// <FnCountIterator>
+void ProfileVisitor::beginVisit( FnCountIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnCountIterator const & ) {
+}
+// </FnCountIterator>
+
+
+// <FnAvgIterator>
+void ProfileVisitor::beginVisit( FnAvgIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnAvgIterator const & ) {
+}
+// </FnAvgIterator>
+
+
+// <FnSumIterator>
+void ProfileVisitor::beginVisit( FnSumIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSumIterator const & ) {
+}
+// </FnSumIterator>
+
+
+// <FnSumDoubleIterator>
+void ProfileVisitor::beginVisit( FnSumDoubleIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSumDoubleIterator const & ) {
+}
+// </FnSumDoubleIterator>
+
+
+// <FnSumFloatIterator>
+void ProfileVisitor::beginVisit( FnSumFloatIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSumFloatIterator const & ) {
+}
+// </FnSumFloatIterator>
+
+
+// <FnSumDecimalIterator>
+void ProfileVisitor::beginVisit( FnSumDecimalIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSumDecimalIterator const & ) {
+}
+// </FnSumDecimalIterator>
+
+
+// <FnSumIntegerIterator>
+void ProfileVisitor::beginVisit( FnSumIntegerIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnSumIntegerIterator const & ) {
+}
+// </FnSumIntegerIterator>
+
+
+// <OpToIterator>
+void ProfileVisitor::beginVisit( OpToIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( OpToIterator const & ) {
+}
+// </OpToIterator>
+
+
+// <FnIdIterator>
+void ProfileVisitor::beginVisit( FnIdIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnIdIterator const & ) {
+}
+// </FnIdIterator>
+
+
+// <FnElementWithIdIterator>
+void ProfileVisitor::beginVisit( FnElementWithIdIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnElementWithIdIterator const & ) {
+}
+// </FnElementWithIdIterator>
+
+
+// <FnIdRefIterator>
+void ProfileVisitor::beginVisit( FnIdRefIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnIdRefIterator const & ) {
+}
+// </FnIdRefIterator>
+
+
+// <FnDocIterator>
+void ProfileVisitor::beginVisit( FnDocIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnDocIterator const & ) {
+}
+// </FnDocIterator>
+
+
+// <FnDocAvailableIterator>
+void ProfileVisitor::beginVisit( FnDocAvailableIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnDocAvailableIterator const & ) {
+}
+// </FnDocAvailableIterator>
+
+
+// <FnAvailableEnvironmentVariablesIterator>
+void ProfileVisitor::beginVisit( FnAvailableEnvironmentVariablesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnAvailableEnvironmentVariablesIterator const & ) {
+}
+// </FnAvailableEnvironmentVariablesIterator>
+
+
+// <FnEnvironmentVariableIterator>
+void ProfileVisitor::beginVisit( FnEnvironmentVariableIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnEnvironmentVariableIterator const & ) {
+}
+// </FnEnvironmentVariableIterator>
+
+
+// <FnUnparsedTextIterator>
+void ProfileVisitor::beginVisit( FnUnparsedTextIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnUnparsedTextIterator const & ) {
+}
+// </FnUnparsedTextIterator>
+
+
+// <FnUnparsedTextAvailableIterator>
+void ProfileVisitor::beginVisit( FnUnparsedTextAvailableIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnUnparsedTextAvailableIterator const & ) {
+}
+// </FnUnparsedTextAvailableIterator>
+
+
+// <FnUnparsedTextLinesIterator>
+void ProfileVisitor::beginVisit( FnUnparsedTextLinesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnUnparsedTextLinesIterator const & ) {
+}
+// </FnUnparsedTextLinesIterator>
+
+
+// <AvailableDocumentsIterator>
+void ProfileVisitor::beginVisit( AvailableDocumentsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AvailableDocumentsIterator const & ) {
+}
+// </AvailableDocumentsIterator>
+
+
+// <IsAvailableDocumentIterator>
+void ProfileVisitor::beginVisit( IsAvailableDocumentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IsAvailableDocumentIterator const & ) {
+}
+// </IsAvailableDocumentIterator>
+
+
+// <PutDocumentIterator>
+void ProfileVisitor::beginVisit( PutDocumentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( PutDocumentIterator const & ) {
+}
+// </PutDocumentIterator>
+
+
+// <RemoveDocumentIterator>
+void ProfileVisitor::beginVisit( RemoveDocumentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RemoveDocumentIterator const & ) {
+}
+// </RemoveDocumentIterator>
+
+
+// <RetrieveDocumentIterator>
+void ProfileVisitor::beginVisit( RetrieveDocumentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( RetrieveDocumentIterator const & ) {
+}
+// </RetrieveDocumentIterator>
+
+
+// <MapCreateIterator>
+void ProfileVisitor::beginVisit( MapCreateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapCreateIterator const & ) {
+}
+// </MapCreateIterator>
+
+
+// <MapDropIterator>
+void ProfileVisitor::beginVisit( MapDropIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapDropIterator const & ) {
+}
+// </MapDropIterator>
+
+
+// <MapGetIterator>
+void ProfileVisitor::beginVisit( MapGetIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapGetIterator const & ) {
+}
+// </MapGetIterator>
+
+
+// <MapInsertIterator>
+void ProfileVisitor::beginVisit( MapInsertIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapInsertIterator const & ) {
+}
+// </MapInsertIterator>
+
+
+// <MapDeleteIterator>
+void ProfileVisitor::beginVisit( MapDeleteIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapDeleteIterator const & ) {
+}
+// </MapDeleteIterator>
+
+
+// <MapKeysIterator>
+void ProfileVisitor::beginVisit( MapKeysIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapKeysIterator const & ) {
+}
+// </MapKeysIterator>
+
+
+// <MapSizeIterator>
+void ProfileVisitor::beginVisit( MapSizeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapSizeIterator const & ) {
+}
+// </MapSizeIterator>
+
+
+// <AvailableMapsIterator>
+void ProfileVisitor::beginVisit( AvailableMapsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( AvailableMapsIterator const & ) {
+}
+// </AvailableMapsIterator>
+
+
+// <MapOptionsIterator>
+void ProfileVisitor::beginVisit( MapOptionsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( MapOptionsIterator const & ) {
+}
+// </MapOptionsIterator>
+
+
+// <CodepointsToStringIterator>
+void ProfileVisitor::beginVisit( CodepointsToStringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CodepointsToStringIterator const & ) {
+}
+// </CodepointsToStringIterator>
+
+
+// <StringToCodepointsIterator>
+void ProfileVisitor::beginVisit( StringToCodepointsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringToCodepointsIterator const & ) {
+}
+// </StringToCodepointsIterator>
+
+
+// <CompareStrIterator>
+void ProfileVisitor::beginVisit( CompareStrIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CompareStrIterator const & ) {
+}
+// </CompareStrIterator>
+
+
+// <CodepointEqualIterator>
+void ProfileVisitor::beginVisit( CodepointEqualIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( CodepointEqualIterator const & ) {
+}
+// </CodepointEqualIterator>
+
+
+// <ConcatStrIterator>
+void ProfileVisitor::beginVisit( ConcatStrIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ConcatStrIterator const & ) {
+}
+// </ConcatStrIterator>
+
+
+// <StringJoinIterator>
+void ProfileVisitor::beginVisit( StringJoinIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringJoinIterator const & ) {
+}
+// </StringJoinIterator>
+
+
+// <SubstringIterator>
+void ProfileVisitor::beginVisit( SubstringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SubstringIterator const & ) {
+}
+// </SubstringIterator>
+
+
+// <SubstringIntOptIterator>
+void ProfileVisitor::beginVisit( SubstringIntOptIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SubstringIntOptIterator const & ) {
+}
+// </SubstringIntOptIterator>
+
+
+// <StringLengthIterator>
+void ProfileVisitor::beginVisit( StringLengthIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringLengthIterator const & ) {
+}
+// </StringLengthIterator>
+
+
+// <NormalizeSpaceIterator>
+void ProfileVisitor::beginVisit( NormalizeSpaceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NormalizeSpaceIterator const & ) {
+}
+// </NormalizeSpaceIterator>
+
+
+// <NormalizeUnicodeIterator>
+void ProfileVisitor::beginVisit( NormalizeUnicodeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( NormalizeUnicodeIterator const & ) {
+}
+// </NormalizeUnicodeIterator>
+
+
+// <UpperCaseIterator>
+void ProfileVisitor::beginVisit( UpperCaseIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( UpperCaseIterator const & ) {
+}
+// </UpperCaseIterator>
+
+
+// <LowerCaseIterator>
+void ProfileVisitor::beginVisit( LowerCaseIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( LowerCaseIterator const & ) {
+}
+// </LowerCaseIterator>
+
+
+// <TranslateIterator>
+void ProfileVisitor::beginVisit( TranslateIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( TranslateIterator const & ) {
+}
+// </TranslateIterator>
+
+
+// <EncodeForUriIterator>
+void ProfileVisitor::beginVisit( EncodeForUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( EncodeForUriIterator const & ) {
+}
+// </EncodeForUriIterator>
+
+
+// <IriToUriIterator>
+void ProfileVisitor::beginVisit( IriToUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( IriToUriIterator const & ) {
+}
+// </IriToUriIterator>
+
+
+// <EscapeHtmlUriIterator>
+void ProfileVisitor::beginVisit( EscapeHtmlUriIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( EscapeHtmlUriIterator const & ) {
+}
+// </EscapeHtmlUriIterator>
+
+
+// <ContainsIterator>
+void ProfileVisitor::beginVisit( ContainsIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ContainsIterator const & ) {
+}
+// </ContainsIterator>
+
+
+// <StartsWithIterator>
+void ProfileVisitor::beginVisit( StartsWithIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StartsWithIterator const & ) {
+}
+// </StartsWithIterator>
+
+
+// <EndsWithIterator>
+void ProfileVisitor::beginVisit( EndsWithIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( EndsWithIterator const & ) {
+}
+// </EndsWithIterator>
+
+
+// <SubstringBeforeIterator>
+void ProfileVisitor::beginVisit( SubstringBeforeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SubstringBeforeIterator const & ) {
+}
+// </SubstringBeforeIterator>
+
+
+// <SubstringAfterIterator>
+void ProfileVisitor::beginVisit( SubstringAfterIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SubstringAfterIterator const & ) {
+}
+// </SubstringAfterIterator>
+
+
+// <FnMatchesIterator>
+void ProfileVisitor::beginVisit( FnMatchesIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnMatchesIterator const & ) {
+}
+// </FnMatchesIterator>
+
+
+// <FnReplaceIterator>
+void ProfileVisitor::beginVisit( FnReplaceIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnReplaceIterator const & ) {
+}
+// </FnReplaceIterator>
+
+
+// <FnTokenizeIterator>
+void ProfileVisitor::beginVisit( FnTokenizeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnTokenizeIterator const & ) {
+}
+// </FnTokenizeIterator>
+
+
+// <FnAnalyzeStringIterator>
+void ProfileVisitor::beginVisit( FnAnalyzeStringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( FnAnalyzeStringIterator const & ) {
+}
+// </FnAnalyzeStringIterator>
+
+
+// <StringAnalyzeStringIterator>
+void ProfileVisitor::beginVisit( StringAnalyzeStringIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringAnalyzeStringIterator const & ) {
+}
+// </StringAnalyzeStringIterator>
+
+
+// <StringMaterializeIterator>
+void ProfileVisitor::beginVisit( StringMaterializeIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringMaterializeIterator const & ) {
+}
+// </StringMaterializeIterator>
+
+
+// <StringIsStreamableIterator>
+void ProfileVisitor::beginVisit( StringIsStreamableIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringIsStreamableIterator const & ) {
+}
+// </StringIsStreamableIterator>
+
+
+// <StringIsSeekableIterator>
+void ProfileVisitor::beginVisit( StringIsSeekableIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringIsSeekableIterator const & ) {
+}
+// </StringIsSeekableIterator>
+
+
+// <StringSplitIterator>
+void ProfileVisitor::beginVisit( StringSplitIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( StringSplitIterator const & ) {
+}
+// </StringSplitIterator>
+
+
+// <DecodeURIIterator>
+void ProfileVisitor::beginVisit( DecodeURIIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( DecodeURIIterator const & ) {
+}
+// </DecodeURIIterator>
+
+
+// <ParseURIIterator>
+void ProfileVisitor::beginVisit( ParseURIIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( ParseURIIterator const & ) {
+}
+// </ParseURIIterator>
+
+
+// <SerializeURIIterator>
+void ProfileVisitor::beginVisit( SerializeURIIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( SerializeURIIterator const & ) {
+}
+// </SerializeURIIterator>
+
+
+// <XQDocContentIterator>
+void ProfileVisitor::beginVisit( XQDocContentIterator const &iter ) {
+}
+
+void ProfileVisitor::endVisit( XQDocContentIterator const & ) {
+}
+// </XQDocContentIterator>
+
+} // namespace zorba

=== added file 'src/runtime/visitors/pregenerated/profile_visitor.h'
--- src/runtime/visitors/pregenerated/profile_visitor.h	1970-01-01 00:00:00 +0000
+++ src/runtime/visitors/pregenerated/profile_visitor.h	2014-02-24 23:33:07 +0000
@@ -0,0 +1,791 @@
+/*
+ * Copyright 2006-2012 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+#ifndef ZORBA_RUNTIME_PROFILE_VISITOR_H
+#define ZORBA_RUNTIME_PROFILE_VISITOR_H
+#include "runtime/visitors/planiter_visitor.h"
+namespace zorba {
+class PlanIterator;
+class PlanState;
+class ProfileVisitor : public PlanIterVisitor {
+private:
+  PlanState &plan_state_;
+public:
+  ProfileVisitor( PlanState &plan_state ) : plan_state_( plan_state ) { }
+
+#include "runtime/visitors/plan_iter_visitor_impl.h"
+
+  void beginVisit( NodeNameIterator const& );
+  void endVisit  ( NodeNameIterator const& );
+  void beginVisit( NilledIterator const& );
+  void endVisit  ( NilledIterator const& );
+  void beginVisit( FnStringIterator const& );
+  void endVisit  ( FnStringIterator const& );
+  void beginVisit( FnDataIterator const& );
+  void endVisit  ( FnDataIterator const& );
+  void beginVisit( BaseUriIterator const& );
+  void endVisit  ( BaseUriIterator const& );
+  void beginVisit( DocumentUriIterator const& );
+  void endVisit  ( DocumentUriIterator const& );
+  void beginVisit( RootIterator const& );
+  void endVisit  ( RootIterator const& );
+  void beginVisit( ResolveUriIterator const& );
+  void endVisit  ( ResolveUriIterator const& );
+  void beginVisit( Base64DecodeIterator const& );
+  void endVisit  ( Base64DecodeIterator const& );
+  void beginVisit( Base64EncodeIterator const& );
+  void endVisit  ( Base64EncodeIterator const& );
+  void beginVisit( IsSameNodeIterator const& );
+  void endVisit  ( IsSameNodeIterator const& );
+  void beginVisit( NodeBeforeIterator const& );
+  void endVisit  ( NodeBeforeIterator const& );
+  void beginVisit( NodeAfterIterator const& );
+  void endVisit  ( NodeAfterIterator const& );
+  void beginVisit( ZorbaCreateCollectionIterator const& );
+  void endVisit  ( ZorbaCreateCollectionIterator const& );
+  void beginVisit( ZorbaDeleteCollectionIterator const& );
+  void endVisit  ( ZorbaDeleteCollectionIterator const& );
+  void beginVisit( IsAvailableCollectionIterator const& );
+  void endVisit  ( IsAvailableCollectionIterator const& );
+  void beginVisit( AvailableCollectionsIterator const& );
+  void endVisit  ( AvailableCollectionsIterator const& );
+  void beginVisit( FnCollectionIterator const& );
+  void endVisit  ( FnCollectionIterator const& );
+  void beginVisit( ZorbaCollectionIterator const& );
+  void endVisit  ( ZorbaCollectionIterator const& );
+  void beginVisit( ZorbaCollectionNameIterator const& );
+  void endVisit  ( ZorbaCollectionNameIterator const& );
+  void beginVisit( ZorbaIndexOfIterator const& );
+  void endVisit  ( ZorbaIndexOfIterator const& );
+  void beginVisit( ZorbaApplyInsertIterator const& );
+  void endVisit  ( ZorbaApplyInsertIterator const& );
+  void beginVisit( ZorbaInsertAfterIterator const& );
+  void endVisit  ( ZorbaInsertAfterIterator const& );
+  void beginVisit( ZorbaInsertBeforeIterator const& );
+  void endVisit  ( ZorbaInsertBeforeIterator const& );
+  void beginVisit( ZorbaInsertFirstIterator const& );
+  void endVisit  ( ZorbaInsertFirstIterator const& );
+  void beginVisit( ZorbaInsertLastIterator const& );
+  void endVisit  ( ZorbaInsertLastIterator const& );
+  void beginVisit( ZorbaApplyInsertFirstIterator const& );
+  void endVisit  ( ZorbaApplyInsertFirstIterator const& );
+  void beginVisit( ZorbaApplyInsertLastIterator const& );
+  void endVisit  ( ZorbaApplyInsertLastIterator const& );
+  void beginVisit( ZorbaApplyInsertBeforeIterator const& );
+  void endVisit  ( ZorbaApplyInsertBeforeIterator const& );
+  void beginVisit( ZorbaApplyInsertAfterIterator const& );
+  void endVisit  ( ZorbaApplyInsertAfterIterator const& );
+  void beginVisit( ZorbaDeleteIterator const& );
+  void endVisit  ( ZorbaDeleteIterator const& );
+  void beginVisit( ZorbaDeleteFirstIterator const& );
+  void endVisit  ( ZorbaDeleteFirstIterator const& );
+  void beginVisit( ZorbaDeleteLastIterator const& );
+  void endVisit  ( ZorbaDeleteLastIterator const& );
+  void beginVisit( ZorbaEditIterator const& );
+  void endVisit  ( ZorbaEditIterator const& );
+  void beginVisit( ZorbaInsertIterator const& );
+  void endVisit  ( ZorbaInsertIterator const& );
+  void beginVisit( ZorbaTruncateCollectionIterator const& );
+  void endVisit  ( ZorbaTruncateCollectionIterator const& );
+  void beginVisit( IsAvailableIndexIterator const& );
+  void endVisit  ( IsAvailableIndexIterator const& );
+  void beginVisit( AvailableIndexesIterator const& );
+  void endVisit  ( AvailableIndexesIterator const& );
+  void beginVisit( IsActivatedICIterator const& );
+  void endVisit  ( IsActivatedICIterator const& );
+  void beginVisit( ActivatedICsIterator const& );
+  void endVisit  ( ActivatedICsIterator const& );
+  void beginVisit( IsDeclaredCollectionIterator const& );
+  void endVisit  ( IsDeclaredCollectionIterator const& );
+  void beginVisit( DeclaredCollectionsIterator const& );
+  void endVisit  ( DeclaredCollectionsIterator const& );
+  void beginVisit( IsDeclaredIndexIterator const& );
+  void endVisit  ( IsDeclaredIndexIterator const& );
+  void beginVisit( DeclaredIndexesIterator const& );
+  void endVisit  ( DeclaredIndexesIterator const& );
+  void beginVisit( IsDeclaredICIterator const& );
+  void endVisit  ( IsDeclaredICIterator const& );
+  void beginVisit( DeclaredICsIterator const& );
+  void endVisit  ( DeclaredICsIterator const& );
+  void beginVisit( FnURICollectionIterator const& );
+  void endVisit  ( FnURICollectionIterator const& );
+  void beginVisit( CurrentDateTimeIterator const& );
+  void endVisit  ( CurrentDateTimeIterator const& );
+  void beginVisit( CurrentDateIterator const& );
+  void endVisit  ( CurrentDateIterator const& );
+  void beginVisit( CurrentTimeIterator const& );
+  void endVisit  ( CurrentTimeIterator const& );
+  void beginVisit( ImplicitTimezoneIterator const& );
+  void endVisit  ( ImplicitTimezoneIterator const& );
+  void beginVisit( DefaultCollationIterator const& );
+  void endVisit  ( DefaultCollationIterator const& );
+  void beginVisit( CsvParseIterator const& );
+  void endVisit  ( CsvParseIterator const& );
+  void beginVisit( CsvSerializeIterator const& );
+  void endVisit  ( CsvSerializeIterator const& );
+  void beginVisit( CurrentDate const& );
+  void endVisit  ( CurrentDate const& );
+  void beginVisit( CurrentDateTime const& );
+  void endVisit  ( CurrentDateTime const& );
+  void beginVisit( CurrentTime const& );
+  void endVisit  ( CurrentTime const& );
+  void beginVisit( MillisToDateTime const& );
+  void endVisit  ( MillisToDateTime const& );
+  void beginVisit( ParseDate const& );
+  void endVisit  ( ParseDate const& );
+  void beginVisit( ParseDateTime const& );
+  void endVisit  ( ParseDateTime const& );
+  void beginVisit( ParseTime const& );
+  void endVisit  ( ParseTime const& );
+  void beginVisit( Timestamp const& );
+  void endVisit  ( Timestamp const& );
+  void beginVisit( UTCOffset const& );
+  void endVisit  ( UTCOffset const& );
+#ifdef ZORBA_WITH_DEBUGGER
+  void beginVisit( DebugIterator const& );
+  void endVisit  ( DebugIterator const& );
+#endif
+  void beginVisit( YearsFromDurationIterator const& );
+  void endVisit  ( YearsFromDurationIterator const& );
+  void beginVisit( MonthsFromDurationIterator const& );
+  void endVisit  ( MonthsFromDurationIterator const& );
+  void beginVisit( DaysFromDurationIterator const& );
+  void endVisit  ( DaysFromDurationIterator const& );
+  void beginVisit( HoursFromDurationIterator const& );
+  void endVisit  ( HoursFromDurationIterator const& );
+  void beginVisit( MinutesFromDurationIterator const& );
+  void endVisit  ( MinutesFromDurationIterator const& );
+  void beginVisit( SecondsFromDurationIterator const& );
+  void endVisit  ( SecondsFromDurationIterator const& );
+  void beginVisit( YearFromDatetimeIterator const& );
+  void endVisit  ( YearFromDatetimeIterator const& );
+  void beginVisit( MonthFromDatetimeIterator const& );
+  void endVisit  ( MonthFromDatetimeIterator const& );
+  void beginVisit( DayFromDatetimeIterator const& );
+  void endVisit  ( DayFromDatetimeIterator const& );
+  void beginVisit( HoursFromDatetimeIterator const& );
+  void endVisit  ( HoursFromDatetimeIterator const& );
+  void beginVisit( MinutesFromDatetimeIterator const& );
+  void endVisit  ( MinutesFromDatetimeIterator const& );
+  void beginVisit( SecondsFromDatetimeIterator const& );
+  void endVisit  ( SecondsFromDatetimeIterator const& );
+  void beginVisit( TimezoneFromDatetimeIterator const& );
+  void endVisit  ( TimezoneFromDatetimeIterator const& );
+  void beginVisit( YearFromDateIterator const& );
+  void endVisit  ( YearFromDateIterator const& );
+  void beginVisit( MonthFromDateIterator const& );
+  void endVisit  ( MonthFromDateIterator const& );
+  void beginVisit( DayFromDateIterator const& );
+  void endVisit  ( DayFromDateIterator const& );
+  void beginVisit( TimezoneFromDateIterator const& );
+  void endVisit  ( TimezoneFromDateIterator const& );
+  void beginVisit( HoursFromTimeIterator const& );
+  void endVisit  ( HoursFromTimeIterator const& );
+  void beginVisit( MinutesFromTimeIterator const& );
+  void endVisit  ( MinutesFromTimeIterator const& );
+  void beginVisit( SecondsFromTimeIterator const& );
+  void endVisit  ( SecondsFromTimeIterator const& );
+  void beginVisit( TimezoneFromTimeIterator const& );
+  void endVisit  ( TimezoneFromTimeIterator const& );
+  void beginVisit( ErrorIterator const& );
+  void endVisit  ( ErrorIterator const& );
+  void beginVisit( TraceIterator const& );
+  void endVisit  ( TraceIterator const& );
+  void beginVisit( ReadLineIterator const& );
+  void endVisit  ( ReadLineIterator const& );
+  void beginVisit( PrintIterator const& );
+  void endVisit  ( PrintIterator const& );
+  void beginVisit( FunctionTraceIterator const& );
+  void endVisit  ( FunctionTraceIterator const& );
+  void beginVisit( FetchContentIterator const& );
+  void endVisit  ( FetchContentIterator const& );
+  void beginVisit( FetchContentBinaryIterator const& );
+  void endVisit  ( FetchContentBinaryIterator const& );
+  void beginVisit( FetchContentTypeIterator const& );
+  void endVisit  ( FetchContentTypeIterator const& );
+  void beginVisit( FnPutIterator const& );
+  void endVisit  ( FnPutIterator const& );
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( CurrentCompareOptionsIterator const& );
+  void endVisit  ( CurrentCompareOptionsIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( CurrentLangIterator const& );
+  void endVisit  ( CurrentLangIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( HostLangIterator const& );
+  void endVisit  ( HostLangIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( IsStemLangSupportedIterator const& );
+  void endVisit  ( IsStemLangSupportedIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( IsStopWordIterator const& );
+  void endVisit  ( IsStopWordIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( IsStopWordLangSupportedIterator const& );
+  void endVisit  ( IsStopWordLangSupportedIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( IsThesaurusLangSupportedIterator const& );
+  void endVisit  ( IsThesaurusLangSupportedIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( IsTokenizerLangSupportedIterator const& );
+  void endVisit  ( IsTokenizerLangSupportedIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( StemIterator const& );
+  void endVisit  ( StemIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( StripDiacriticsIterator const& );
+  void endVisit  ( StripDiacriticsIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( ThesaurusLookupIterator const& );
+  void endVisit  ( ThesaurusLookupIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( TokenizeNodeIterator const& );
+  void endVisit  ( TokenizeNodeIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( TokenizeNodesIterator const& );
+  void endVisit  ( TokenizeNodesIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( TokenizerPropertiesIterator const& );
+  void endVisit  ( TokenizerPropertiesIterator const& );
+#endif
+#ifndef ZORBA_NO_FULL_TEXT
+  void beginVisit( TokenizeStringIterator const& );
+  void endVisit  ( TokenizeStringIterator const& );
+#endif
+  void beginVisit( FunctionLookupIterator const& );
+  void endVisit  ( FunctionLookupIterator const& );
+  void beginVisit( FunctionNameIterator const& );
+  void endVisit  ( FunctionNameIterator const& );
+  void beginVisit( FunctionArityIterator const& );
+  void endVisit  ( FunctionArityIterator const& );
+  void beginVisit( FnForEachPairIterator const& );
+  void endVisit  ( FnForEachPairIterator const& );
+  void beginVisit( FnFoldLeftIterator const& );
+  void endVisit  ( FnFoldLeftIterator const& );
+  void beginVisit( ActivateICIterator const& );
+  void endVisit  ( ActivateICIterator const& );
+  void beginVisit( DeactivateICIterator const& );
+  void endVisit  ( DeactivateICIterator const& );
+  void beginVisit( CheckICIterator const& );
+  void endVisit  ( CheckICIterator const& );
+  void beginVisit( IndexKeysIterator const& );
+  void endVisit  ( IndexKeysIterator const& );
+  void beginVisit( MemSizeIterator const& );
+  void endVisit  ( MemSizeIterator const& );
+  void beginVisit( JSONtoXMLInternal const& );
+  void endVisit  ( JSONtoXMLInternal const& );
+  void beginVisit( XMLtoJSONInternal const& );
+  void endVisit  ( XMLtoJSONInternal const& );
+  void beginVisit( JSONDecodeFromRoundtripIterator const& );
+  void endVisit  ( JSONDecodeFromRoundtripIterator const& );
+  void beginVisit( JSONEncodeForRoundtripIterator const& );
+  void endVisit  ( JSONEncodeForRoundtripIterator const& );
+  void beginVisit( JSONParseIterator const& );
+  void endVisit  ( JSONParseIterator const& );
+  void beginVisit( MultiObjectKeysIterator const& );
+  void endVisit  ( MultiObjectKeysIterator const& );
+  void beginVisit( SingleObjectKeysIterator const& );
+  void endVisit  ( SingleObjectKeysIterator const& );
+  void beginVisit( MultiObjectLookupIterator const& );
+  void endVisit  ( MultiObjectLookupIterator const& );
+  void beginVisit( SingleObjectLookupIterator const& );
+  void endVisit  ( SingleObjectLookupIterator const& );
+  void beginVisit( JSONObjectProjectIterator const& );
+  void endVisit  ( JSONObjectProjectIterator const& );
+  void beginVisit( JSONObjectTrimIterator const& );
+  void endVisit  ( JSONObjectTrimIterator const& );
+  void beginVisit( MultiArrayMembersIterator const& );
+  void endVisit  ( MultiArrayMembersIterator const& );
+  void beginVisit( SingleArrayMembersIterator const& );
+  void endVisit  ( SingleArrayMembersIterator const& );
+  void beginVisit( MultiArrayLookupIterator const& );
+  void endVisit  ( MultiArrayLookupIterator const& );
+  void beginVisit( SingleArrayLookupIterator const& );
+  void endVisit  ( SingleArrayLookupIterator const& );
+  void beginVisit( JSONArraySizeIterator const& );
+  void endVisit  ( JSONArraySizeIterator const& );
+  void beginVisit( JSONArrayFlattenIterator const& );
+  void endVisit  ( JSONArrayFlattenIterator const& );
+  void beginVisit( JSONNullIterator const& );
+  void endVisit  ( JSONNullIterator const& );
+  void beginVisit( JSONObjectInsertIterator const& );
+  void endVisit  ( JSONObjectInsertIterator const& );
+  void beginVisit( JSONArrayInsertIterator const& );
+  void endVisit  ( JSONArrayInsertIterator const& );
+  void beginVisit( JSONDeleteIterator const& );
+  void endVisit  ( JSONDeleteIterator const& );
+  void beginVisit( JSONReplaceValueIterator const& );
+  void endVisit  ( JSONReplaceValueIterator const& );
+  void beginVisit( JSONRenameIterator const& );
+  void endVisit  ( JSONRenameIterator const& );
+  void beginVisit( JSONArrayAppendIterator const& );
+  void endVisit  ( JSONArrayAppendIterator const& );
+  void beginVisit( JSONBoxIterator const& );
+  void endVisit  ( JSONBoxIterator const& );
+  void beginVisit( JSoundAnnotateIterator const& );
+  void endVisit  ( JSoundAnnotateIterator const& );
+  void beginVisit( JSoundValidateIterator const& );
+  void endVisit  ( JSoundValidateIterator const& );
+  void beginVisit( SqrtIterator const& );
+  void endVisit  ( SqrtIterator const& );
+  void beginVisit( ExpIterator const& );
+  void endVisit  ( ExpIterator const& );
+  void beginVisit( Exp10Iterator const& );
+  void endVisit  ( Exp10Iterator const& );
+  void beginVisit( LogIterator const& );
+  void endVisit  ( LogIterator const& );
+  void beginVisit( Log10Iterator const& );
+  void endVisit  ( Log10Iterator const& );
+  void beginVisit( SinIterator const& );
+  void endVisit  ( SinIterator const& );
+  void beginVisit( CosIterator const& );
+  void endVisit  ( CosIterator const& );
+  void beginVisit( TanIterator const& );
+  void endVisit  ( TanIterator const& );
+  void beginVisit( ArcSinIterator const& );
+  void endVisit  ( ArcSinIterator const& );
+  void beginVisit( ArcCosIterator const& );
+  void endVisit  ( ArcCosIterator const& );
+  void beginVisit( ArcTanIterator const& );
+  void endVisit  ( ArcTanIterator const& );
+  void beginVisit( Atan2Iterator const& );
+  void endVisit  ( Atan2Iterator const& );
+  void beginVisit( CoshIterator const& );
+  void endVisit  ( CoshIterator const& );
+  void beginVisit( AcoshIterator const& );
+  void endVisit  ( AcoshIterator const& );
+  void beginVisit( FmodIterator const& );
+  void endVisit  ( FmodIterator const& );
+  void beginVisit( LdexpIterator const& );
+  void endVisit  ( LdexpIterator const& );
+  void beginVisit( PowIterator const& );
+  void endVisit  ( PowIterator const& );
+  void beginVisit( SinhIterator const& );
+  void endVisit  ( SinhIterator const& );
+  void beginVisit( AsinhIterator const& );
+  void endVisit  ( AsinhIterator const& );
+  void beginVisit( TanhIterator const& );
+  void endVisit  ( TanhIterator const& );
+  void beginVisit( AtanhIterator const& );
+  void endVisit  ( AtanhIterator const& );
+  void beginVisit( PiNumberIterator const& );
+  void endVisit  ( PiNumberIterator const& );
+  void beginVisit( IsInfIterator const& );
+  void endVisit  ( IsInfIterator const& );
+  void beginVisit( IsNaNIterator const& );
+  void endVisit  ( IsNaNIterator const& );
+  void beginVisit( ModfIterator const& );
+  void endVisit  ( ModfIterator const& );
+  void beginVisit( FrexpIterator const& );
+  void endVisit  ( FrexpIterator const& );
+  void beginVisit( NodePositionIterator const& );
+  void endVisit  ( NodePositionIterator const& );
+  void beginVisit( IsAncestorPositionIterator const& );
+  void endVisit  ( IsAncestorPositionIterator const& );
+  void beginVisit( IsFollowingSiblingPositionIterator const& );
+  void endVisit  ( IsFollowingSiblingPositionIterator const& );
+  void beginVisit( IsFollowingPositionIterator const& );
+  void endVisit  ( IsFollowingPositionIterator const& );
+  void beginVisit( IsInSubtreeOfPositionIterator const& );
+  void endVisit  ( IsInSubtreeOfPositionIterator const& );
+  void beginVisit( IsDescendantPositionIterator const& );
+  void endVisit  ( IsDescendantPositionIterator const& );
+  void beginVisit( IsPrecedingSiblingPositionIterator const& );
+  void endVisit  ( IsPrecedingSiblingPositionIterator const& );
+  void beginVisit( IsPrecedingPositionIterator const& );
+  void endVisit  ( IsPrecedingPositionIterator const& );
+  void beginVisit( IsChildPositionIterator const& );
+  void endVisit  ( IsChildPositionIterator const& );
+  void beginVisit( IsAttributeOfPositionIterator const& );
+  void endVisit  ( IsAttributeOfPositionIterator const& );
+  void beginVisit( IsParentPositionIterator const& );
+  void endVisit  ( IsParentPositionIterator const& );
+  void beginVisit( IsPrecedingInDocumentOrderPositionIterator const& );
+  void endVisit  ( IsPrecedingInDocumentOrderPositionIterator const& );
+  void beginVisit( IsFollowingInDocumentOrderPositionIterator const& );
+  void endVisit  ( IsFollowingInDocumentOrderPositionIterator const& );
+  void beginVisit( LevelPositionIterator const& );
+  void endVisit  ( LevelPositionIterator const& );
+  void beginVisit( IsAttributePositionIterator const& );
+  void endVisit  ( IsAttributePositionIterator const& );
+  void beginVisit( IsCommentPositionIterator const& );
+  void endVisit  ( IsCommentPositionIterator const& );
+  void beginVisit( IsDocumentPositionIterator const& );
+  void endVisit  ( IsDocumentPositionIterator const& );
+  void beginVisit( IsElementPositionIterator const& );
+  void endVisit  ( IsElementPositionIterator const& );
+  void beginVisit( IsProcessingInstructionPositionIterator const& );
+  void endVisit  ( IsProcessingInstructionPositionIterator const& );
+  void beginVisit( IsTextPositionIterator const& );
+  void endVisit  ( IsTextPositionIterator const& );
+  void beginVisit( IsSiblingPositionIterator const& );
+  void endVisit  ( IsSiblingPositionIterator const& );
+  void beginVisit( InSameTreePositionIterator const& );
+  void endVisit  ( InSameTreePositionIterator const& );
+  void beginVisit( InCollectionPositionIterator const& );
+  void endVisit  ( InCollectionPositionIterator const& );
+  void beginVisit( InSameCollectionPositionIterator const& );
+  void endVisit  ( InSameCollectionPositionIterator const& );
+  void beginVisit( FnLocalNameIterator const& );
+  void endVisit  ( FnLocalNameIterator const& );
+  void beginVisit( FnNamespaceUriIterator const& );
+  void endVisit  ( FnNamespaceUriIterator const& );
+  void beginVisit( FnLangIterator const& );
+  void endVisit  ( FnLangIterator const& );
+  void beginVisit( FnHasChildrenIterator const& );
+  void endVisit  ( FnHasChildrenIterator const& );
+  void beginVisit( FnInnermostIterator const& );
+  void endVisit  ( FnInnermostIterator const& );
+  void beginVisit( FnOutermostIterator const& );
+  void endVisit  ( FnOutermostIterator const& );
+  void beginVisit( FnGenerateIdIterator const& );
+  void endVisit  ( FnGenerateIdIterator const& );
+  void beginVisit( IsAncestorIterator const& );
+  void endVisit  ( IsAncestorIterator const& );
+  void beginVisit( IsDescendantIterator const& );
+  void endVisit  ( IsDescendantIterator const& );
+  void beginVisit( IsParentIterator const& );
+  void endVisit  ( IsParentIterator const& );
+  void beginVisit( IsChildIterator const& );
+  void endVisit  ( IsChildIterator const& );
+  void beginVisit( IsFollowingIterator const& );
+  void endVisit  ( IsFollowingIterator const& );
+  void beginVisit( IsPrecedingIterator const& );
+  void endVisit  ( IsPrecedingIterator const& );
+  void beginVisit( IsFollowingSiblingIterator const& );
+  void endVisit  ( IsFollowingSiblingIterator const& );
+  void beginVisit( IsPrecedingSiblingIterator const& );
+  void endVisit  ( IsPrecedingSiblingIterator const& );
+  void beginVisit( LevelIterator const& );
+  void endVisit  ( LevelIterator const& );
+  void beginVisit( LeastCommonAncestor const& );
+  void endVisit  ( LeastCommonAncestor const& );
+  void beginVisit( FnPathIterator const& );
+  void endVisit  ( FnPathIterator const& );
+  void beginVisit( NodeCopyIterator const& );
+  void endVisit  ( NodeCopyIterator const& );
+  void beginVisit( AbsIterator const& );
+  void endVisit  ( AbsIterator const& );
+  void beginVisit( CeilingIterator const& );
+  void endVisit  ( CeilingIterator const& );
+  void beginVisit( FloorIterator const& );
+  void endVisit  ( FloorIterator const& );
+  void beginVisit( RoundIterator const& );
+  void endVisit  ( RoundIterator const& );
+  void beginVisit( RoundHalfToEvenIterator const& );
+  void endVisit  ( RoundHalfToEvenIterator const& );
+  void beginVisit( FormatNumberIterator const& );
+  void endVisit  ( FormatNumberIterator const& );
+  void beginVisit( FormatIntegerIterator const& );
+  void endVisit  ( FormatIntegerIterator const& );
+  void beginVisit( FnZorbaParseXmlFragmentIterator const& );
+  void endVisit  ( FnZorbaParseXmlFragmentIterator const& );
+  void beginVisit( FnZorbaCanonicalizeIterator const& );
+  void endVisit  ( FnZorbaCanonicalizeIterator const& );
+  void beginVisit( FnParseXmlFragmentIterator const& );
+  void endVisit  ( FnParseXmlFragmentIterator const& );
+  void beginVisit( FnParseXmlIterator const& );
+  void endVisit  ( FnParseXmlIterator const& );
+  void beginVisit( FnSerializeIterator const& );
+  void endVisit  ( FnSerializeIterator const& );
+  void beginVisit( ResolveQNameIterator const& );
+  void endVisit  ( ResolveQNameIterator const& );
+  void beginVisit( QNameIterator const& );
+  void endVisit  ( QNameIterator const& );
+  void beginVisit( QNameEqualIterator const& );
+  void endVisit  ( QNameEqualIterator const& );
+  void beginVisit( PrefixFromQNameIterator const& );
+  void endVisit  ( PrefixFromQNameIterator const& );
+  void beginVisit( LocalNameFromQNameIterator const& );
+  void endVisit  ( LocalNameFromQNameIterator const& );
+  void beginVisit( NamespaceUriFromQNameIterator const& );
+  void endVisit  ( NamespaceUriFromQNameIterator const& );
+  void beginVisit( NamespaceUriForPrefixIterator const& );
+  void endVisit  ( NamespaceUriForPrefixIterator const& );
+  void beginVisit( InScopePrefixesIterator const& );
+  void endVisit  ( InScopePrefixesIterator const& );
+  void beginVisit( SeededRandomIterator const& );
+  void endVisit  ( SeededRandomIterator const& );
+  void beginVisit( RandomIterator const& );
+  void endVisit  ( RandomIterator const& );
+  void beginVisit( UuidIterator const& );
+  void endVisit  ( UuidIterator const& );
+  void beginVisit( ReferenceIterator const& );
+  void endVisit  ( ReferenceIterator const& );
+  void beginVisit( HasReferenceIterator const& );
+  void endVisit  ( HasReferenceIterator const& );
+  void beginVisit( AssignReferenceIterator const& );
+  void endVisit  ( AssignReferenceIterator const& );
+  void beginVisit( DereferenceIterator const& );
+  void endVisit  ( DereferenceIterator const& );
+#ifndef ZORBA_NO_XMLSCHEMA
+  void beginVisit( ValidateIterator const& );
+  void endVisit  ( ValidateIterator const& );
+#endif
+  void beginVisit( ZorbaValidateInPlaceIterator const& );
+  void endVisit  ( ZorbaValidateInPlaceIterator const& );
+  void beginVisit( ZorbaSchemaTypeIterator const& );
+  void endVisit  ( ZorbaSchemaTypeIterator const& );
+  void beginVisit( ZorbaIsValidatedIterator const& );
+  void endVisit  ( ZorbaIsValidatedIterator const& );
+  void beginVisit( SctxBaseUriIterator const& );
+  void endVisit  ( SctxBaseUriIterator const& );
+  void beginVisit( SctxBoundarySpacePolicyIterator const& );
+  void endVisit  ( SctxBoundarySpacePolicyIterator const& );
+  void beginVisit( SctxConstructionModeIterator const& );
+  void endVisit  ( SctxConstructionModeIterator const& );
+  void beginVisit( SctxCopyNamespacesModeIterator const& );
+  void endVisit  ( SctxCopyNamespacesModeIterator const& );
+  void beginVisit( SctxDefaultCollationIterator const& );
+  void endVisit  ( SctxDefaultCollationIterator const& );
+  void beginVisit( SctxDefaultCollectionTypeIterator const& );
+  void endVisit  ( SctxDefaultCollectionTypeIterator const& );
+  void beginVisit( SctxDefaultFunctionNamespaceIterator const& );
+  void endVisit  ( SctxDefaultFunctionNamespaceIterator const& );
+  void beginVisit( SctxDefaultOrderIterator const& );
+  void endVisit  ( SctxDefaultOrderIterator const& );
+  void beginVisit( SctxFunctionAnnotationsIterator const& );
+  void endVisit  ( SctxFunctionAnnotationsIterator const& );
+  void beginVisit( SctxFunctionArgumentsCountIterator const& );
+  void endVisit  ( SctxFunctionArgumentsCountIterator const& );
+  void beginVisit( SctxFunctionNamesIterator const& );
+  void endVisit  ( SctxFunctionNamesIterator const& );
+  void beginVisit( SctxFunctionsIterator const& );
+  void endVisit  ( SctxFunctionsIterator const& );
+  void beginVisit( SctxInScopeAttributeDeclarationsIterator const& );
+  void endVisit  ( SctxInScopeAttributeDeclarationsIterator const& );
+  void beginVisit( SctxInScopeAttributeGroupsIterator const& );
+  void endVisit  ( SctxInScopeAttributeGroupsIterator const& );
+  void beginVisit( SctxInScopeElementDeclarationsIterator const& );
+  void endVisit  ( SctxInScopeElementDeclarationsIterator const& );
+  void beginVisit( SctxInScopeElementGroupsIterator const& );
+  void endVisit  ( SctxInScopeElementGroupsIterator const& );
+  void beginVisit( SctxInScopeSchemaTypesIterator const& );
+  void endVisit  ( SctxInScopeSchemaTypesIterator const& );
+  void beginVisit( SctxInscopeVariablesIterator const& );
+  void endVisit  ( SctxInscopeVariablesIterator const& );
+  void beginVisit( SctxOptionIterator const& );
+  void endVisit  ( SctxOptionIterator const& );
+  void beginVisit( SctxOrderingModeIterator const& );
+  void endVisit  ( SctxOrderingModeIterator const& );
+  void beginVisit( SctxStaticallyKnownCollationsIterator const& );
+  void endVisit  ( SctxStaticallyKnownCollationsIterator const& );
+  void beginVisit( SctxStaticallyKnownDocumentsIterator const& );
+  void endVisit  ( SctxStaticallyKnownDocumentsIterator const& );
+  void beginVisit( SctxStaticallyKnownDocumentTypeIterator const& );
+  void endVisit  ( SctxStaticallyKnownDocumentTypeIterator const& );
+  void beginVisit( SctxStaticallyKnownNamespaceBindingIterator const& );
+  void endVisit  ( SctxStaticallyKnownNamespaceBindingIterator const& );
+  void beginVisit( SctxStaticallyKnownNamespacesIterator const& );
+  void endVisit  ( SctxStaticallyKnownNamespacesIterator const& );
+  void beginVisit( SctxXPath10CompatModeIterator const& );
+  void endVisit  ( SctxXPath10CompatModeIterator const& );
+  void beginVisit( SeqValueIntersectIterator const& );
+  void endVisit  ( SeqValueIntersectIterator const& );
+  void beginVisit( SeqValueUnionIterator const& );
+  void endVisit  ( SeqValueUnionIterator const& );
+  void beginVisit( SeqValueExceptIterator const& );
+  void endVisit  ( SeqValueExceptIterator const& );
+  void beginVisit( FnConcatIterator const& );
+  void endVisit  ( FnConcatIterator const& );
+  void beginVisit( FnIndexOfIterator const& );
+  void endVisit  ( FnIndexOfIterator const& );
+  void beginVisit( FnEmptyIterator const& );
+  void endVisit  ( FnEmptyIterator const& );
+  void beginVisit( FnExistsIterator const& );
+  void endVisit  ( FnExistsIterator const& );
+  void beginVisit( FnDistinctValuesIterator const& );
+  void endVisit  ( FnDistinctValuesIterator const& );
+  void beginVisit( FnInsertBeforeIterator const& );
+  void endVisit  ( FnInsertBeforeIterator const& );
+  void beginVisit( FnRemoveIterator const& );
+  void endVisit  ( FnRemoveIterator const& );
+  void beginVisit( FnReverseIterator const& );
+  void endVisit  ( FnReverseIterator const& );
+  void beginVisit( FnSubsequenceIterator const& );
+  void endVisit  ( FnSubsequenceIterator const& );
+  void beginVisit( SubsequenceIntIterator const& );
+  void endVisit  ( SubsequenceIntIterator const& );
+  void beginVisit( SequencePointAccessIterator const& );
+  void endVisit  ( SequencePointAccessIterator const& );
+  void beginVisit( FnZeroOrOneIterator const& );
+  void endVisit  ( FnZeroOrOneIterator const& );
+  void beginVisit( FnOneOrMoreIterator const& );
+  void endVisit  ( FnOneOrMoreIterator const& );
+  void beginVisit( FnExactlyOneIterator const& );
+  void endVisit  ( FnExactlyOneIterator const& );
+  void beginVisit( FnDeepEqualIterator const& );
+  void endVisit  ( FnDeepEqualIterator const& );
+  void beginVisit( HashSemiJoinIterator const& );
+  void endVisit  ( HashSemiJoinIterator const& );
+  void beginVisit( SortSemiJoinIterator const& );
+  void endVisit  ( SortSemiJoinIterator const& );
+  void beginVisit( FnCountIterator const& );
+  void endVisit  ( FnCountIterator const& );
+  void beginVisit( FnAvgIterator const& );
+  void endVisit  ( FnAvgIterator const& );
+  void beginVisit( FnSumIterator const& );
+  void endVisit  ( FnSumIterator const& );
+  void beginVisit( FnSumDoubleIterator const& );
+  void endVisit  ( FnSumDoubleIterator const& );
+  void beginVisit( FnSumFloatIterator const& );
+  void endVisit  ( FnSumFloatIterator const& );
+  void beginVisit( FnSumDecimalIterator const& );
+  void endVisit  ( FnSumDecimalIterator const& );
+  void beginVisit( FnSumIntegerIterator const& );
+  void endVisit  ( FnSumIntegerIterator const& );
+  void beginVisit( OpToIterator const& );
+  void endVisit  ( OpToIterator const& );
+  void beginVisit( FnIdIterator const& );
+  void endVisit  ( FnIdIterator const& );
+  void beginVisit( FnElementWithIdIterator const& );
+  void endVisit  ( FnElementWithIdIterator const& );
+  void beginVisit( FnIdRefIterator const& );
+  void endVisit  ( FnIdRefIterator const& );
+  void beginVisit( FnDocIterator const& );
+  void endVisit  ( FnDocIterator const& );
+  void beginVisit( FnDocAvailableIterator const& );
+  void endVisit  ( FnDocAvailableIterator const& );
+  void beginVisit( FnAvailableEnvironmentVariablesIterator const& );
+  void endVisit  ( FnAvailableEnvironmentVariablesIterator const& );
+  void beginVisit( FnEnvironmentVariableIterator const& );
+  void endVisit  ( FnEnvironmentVariableIterator const& );
+  void beginVisit( FnUnparsedTextIterator const& );
+  void endVisit  ( FnUnparsedTextIterator const& );
+  void beginVisit( FnUnparsedTextAvailableIterator const& );
+  void endVisit  ( FnUnparsedTextAvailableIterator const& );
+  void beginVisit( FnUnparsedTextLinesIterator const& );
+  void endVisit  ( FnUnparsedTextLinesIterator const& );
+  void beginVisit( AvailableDocumentsIterator const& );
+  void endVisit  ( AvailableDocumentsIterator const& );
+  void beginVisit( IsAvailableDocumentIterator const& );
+  void endVisit  ( IsAvailableDocumentIterator const& );
+  void beginVisit( PutDocumentIterator const& );
+  void endVisit  ( PutDocumentIterator const& );
+  void beginVisit( RemoveDocumentIterator const& );
+  void endVisit  ( RemoveDocumentIterator const& );
+  void beginVisit( RetrieveDocumentIterator const& );
+  void endVisit  ( RetrieveDocumentIterator const& );
+  void beginVisit( MapCreateIterator const& );
+  void endVisit  ( MapCreateIterator const& );
+  void beginVisit( MapDropIterator const& );
+  void endVisit  ( MapDropIterator const& );
+  void beginVisit( MapGetIterator const& );
+  void endVisit  ( MapGetIterator const& );
+  void beginVisit( MapInsertIterator const& );
+  void endVisit  ( MapInsertIterator const& );
+  void beginVisit( MapDeleteIterator const& );
+  void endVisit  ( MapDeleteIterator const& );
+  void beginVisit( MapKeysIterator const& );
+  void endVisit  ( MapKeysIterator const& );
+  void beginVisit( MapSizeIterator const& );
+  void endVisit  ( MapSizeIterator const& );
+  void beginVisit( AvailableMapsIterator const& );
+  void endVisit  ( AvailableMapsIterator const& );
+  void beginVisit( MapOptionsIterator const& );
+  void endVisit  ( MapOptionsIterator const& );
+  void beginVisit( CodepointsToStringIterator const& );
+  void endVisit  ( CodepointsToStringIterator const& );
+  void beginVisit( StringToCodepointsIterator const& );
+  void endVisit  ( StringToCodepointsIterator const& );
+  void beginVisit( CompareStrIterator const& );
+  void endVisit  ( CompareStrIterator const& );
+  void beginVisit( CodepointEqualIterator const& );
+  void endVisit  ( CodepointEqualIterator const& );
+  void beginVisit( ConcatStrIterator const& );
+  void endVisit  ( ConcatStrIterator const& );
+  void beginVisit( StringJoinIterator const& );
+  void endVisit  ( StringJoinIterator const& );
+  void beginVisit( SubstringIterator const& );
+  void endVisit  ( SubstringIterator const& );
+  void beginVisit( SubstringIntOptIterator const& );
+  void endVisit  ( SubstringIntOptIterator const& );
+  void beginVisit( StringLengthIterator const& );
+  void endVisit  ( StringLengthIterator const& );
+  void beginVisit( NormalizeSpaceIterator const& );
+  void endVisit  ( NormalizeSpaceIterator const& );
+  void beginVisit( NormalizeUnicodeIterator const& );
+  void endVisit  ( NormalizeUnicodeIterator const& );
+  void beginVisit( UpperCaseIterator const& );
+  void endVisit  ( UpperCaseIterator const& );
+  void beginVisit( LowerCaseIterator const& );
+  void endVisit  ( LowerCaseIterator const& );
+  void beginVisit( TranslateIterator const& );
+  void endVisit  ( TranslateIterator const& );
+  void beginVisit( EncodeForUriIterator const& );
+  void endVisit  ( EncodeForUriIterator const& );
+  void beginVisit( IriToUriIterator const& );
+  void endVisit  ( IriToUriIterator const& );
+  void beginVisit( EscapeHtmlUriIterator const& );
+  void endVisit  ( EscapeHtmlUriIterator const& );
+  void beginVisit( ContainsIterator const& );
+  void endVisit  ( ContainsIterator const& );
+  void beginVisit( StartsWithIterator const& );
+  void endVisit  ( StartsWithIterator const& );
+  void beginVisit( EndsWithIterator const& );
+  void endVisit  ( EndsWithIterator const& );
+  void beginVisit( SubstringBeforeIterator const& );
+  void endVisit  ( SubstringBeforeIterator const& );
+  void beginVisit( SubstringAfterIterator const& );
+  void endVisit  ( SubstringAfterIterator const& );
+  void beginVisit( FnMatchesIterator const& );
+  void endVisit  ( FnMatchesIterator const& );
+  void beginVisit( FnReplaceIterator const& );
+  void endVisit  ( FnReplaceIterator const& );
+  void beginVisit( FnTokenizeIterator const& );
+  void endVisit  ( FnTokenizeIterator const& );
+  void beginVisit( FnAnalyzeStringIterator const& );
+  void endVisit  ( FnAnalyzeStringIterator const& );
+  void beginVisit( StringAnalyzeStringIterator const& );
+  void endVisit  ( StringAnalyzeStringIterator const& );
+  void beginVisit( StringMaterializeIterator const& );
+  void endVisit  ( StringMaterializeIterator const& );
+  void beginVisit( StringIsStreamableIterator const& );
+  void endVisit  ( StringIsStreamableIterator const& );
+  void beginVisit( StringIsSeekableIterator const& );
+  void endVisit  ( StringIsSeekableIterator const& );
+  void beginVisit( StringSplitIterator const& );
+  void endVisit  ( StringSplitIterator const& );
+  void beginVisit( DecodeURIIterator const& );
+  void endVisit  ( DecodeURIIterator const& );
+  void beginVisit( ParseURIIterator const& );
+  void endVisit  ( ParseURIIterator const& );
+  void beginVisit( SerializeURIIterator const& );
+  void endVisit  ( SerializeURIIterator const& );
+  void beginVisit( XQDocContentIterator const& );
+  void endVisit  ( XQDocContentIterator const& );
+};
+} // namespace zorba
+#endif

=== modified file 'src/runtime/visitors/printer_visitor_api.cpp'
--- src/runtime/visitors/printer_visitor_api.cpp	2014-02-21 03:53:46 +0000
+++ src/runtime/visitors/printer_visitor_api.cpp	2014-02-24 23:33:07 +0000
@@ -22,13 +22,12 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-void print_iter_plan( IterPrinter &p, PlanIterator *pi ) {
-  PrinterVisitor v( p, pi );
+void print_iter_plan( IterPrinter &p, PlanIterator *i, PlanState *s ) {
+  PrinterVisitor v( p, i, s );
   v.print();
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 
 } // namespace zorba
-
 /* vim:set et sw=2 ts=2: */

=== modified file 'src/runtime/visitors/printer_visitor_api.h'
--- src/runtime/visitors/printer_visitor_api.h	2013-02-07 17:24:36 +0000
+++ src/runtime/visitors/printer_visitor_api.h	2014-02-24 23:33:07 +0000
@@ -17,15 +17,18 @@
 #ifndef ZORBA_RUNTIME_PRINTER_VISITOR_API_H
 #define ZORBA_RUNTIME_PRINTER_VISITOR_API_H
 
-namespace zorba
-{
+namespace zorba {
+
+///////////////////////////////////////////////////////////////////////////////
 
 class PlanIterator;
+class PlanState;
 class IterPrinter;
 
-void print_iter_plan(IterPrinter& aPrinter, PlanIterator* aIter);
-
-} /* namespace zorba */
-
-#endif
+void print_iter_plan( IterPrinter&, PlanIterator*, PlanState* = 0 );
+
+///////////////////////////////////////////////////////////////////////////////
+
+} // namespace zorba
+#endif /* ZORBA_RUNTIME_PRINTER_VISITOR_API_H */
 /* vim:set et sw=2 ts=2: */

=== modified file 'src/runtime/visitors/printer_visitor_impl.cpp'
--- src/runtime/visitors/printer_visitor_impl.cpp	2014-02-21 03:53:46 +0000
+++ src/runtime/visitors/printer_visitor_impl.cpp	2014-02-24 23:33:07 +0000
@@ -16,6 +16,8 @@
 
 #include "stdafx.h"
 
+#include <sstream>
+
 #include <zorba/properties.h>
 
 #include "context/namespace_context.h"
@@ -78,15 +80,36 @@
   thePrinter.stop();
 }
 
-void PrinterVisitor::printCommons(const PlanIterator* aIter, int theId) {
-  if (! Properties::instance().getNoTreeIDs()) {
-    std::stringstream lStream;
-    if (Properties::instance().getStableIteratorIDs())
-      lStream << theId;
+void PrinterVisitor::printCommons( PlanIterator const *pi, int id ) {
+  Properties const &props = Properties::instance();
+  if ( !props.getNoTreeIDs() ) {
+    ostringstream oss;
+    if ( props.getStableIteratorIDs() )
+      oss << id;
     else
-      lStream << aIter;
-
-    thePrinter.addAttribute("id", lStream.str());
+      oss << pi;
+    thePrinter.addAttribute( "id", oss.str() );
+  }
+
+  if ( props.getPrintLocations() ) {
+    QueryLoc const &loc = pi->getLocation();
+    ostringstream oss;
+    oss << loc.getFilename() << ':' << loc.getLineno();
+    thePrinter.addAttribute( "location", oss.str() );
+  }
+
+  if ( props.getProfile() && thePlanState ) {
+    PlanIteratorState const *const pi_state =
+      StateTraitsImpl<PlanIteratorState>::getState(
+        *thePlanState, pi->getStateOffset()
+      );
+    profile_data const &pd = pi_state->get_profile_data();
+    ostringstream oss1, oss2;
+    oss1 << pd.next_.call_count_;
+    oss2 << pd.next_.cpu_time_;
+    thePrinter.addAttribute( "calls", oss1.str() );
+    thePrinter.addAttribute( "cpu", oss2.str() );
+    thePrinter.addAttribute( "prof-name", pi->getNameAsString().str() );
   }
 }
 
@@ -106,9 +129,9 @@
   else
     thePrinter.addAttribute("typename","*");
 
-  std::stringstream lStream;
-  lStream << a->nilledAllowed();
-  thePrinter.addAttribute("nill allowed", lStream.str());
+  ostringstream oss;
+  oss << a->nilledAllowed();
+  thePrinter.addAttribute("nill allowed", oss.str());
 
   if (a->getTargetPos() >= 0)
     thePrinter.addAttribute("target_position", ztd::to_string(a->getTargetPos()));
@@ -546,11 +569,12 @@
   thePrinter.startBeginVisit( "UDFunctionCallIterator", ++theId );
   if ( i.isCached() )
     thePrinter.addAttribute( "cached", "true" );
-  if ( i.theUDF->getSignature().getName() )
-    thePrinter.addAttribute( "function", i.theUDF->getSignature().getName()->getStringValue().str() );
+  store::Item const *const name = i.theUDF->getSignature().getName();
+  if ( name )
+    thePrinter.addAttribute( "function", name->getStringValue().str() );
   else
     thePrinter.addAttribute( "function", "inline function" );
-  printCommons(  &i, theId );
+  printCommons( &i, theId );
   thePrinter.endBeginVisit( theId );
 }
 DEF_END_VISIT( UDFunctionCallIterator )

=== added file 'src/runtime/visitors/profile_visitor_impl.cpp'
--- src/runtime/visitors/profile_visitor_impl.cpp	1970-01-01 00:00:00 +0000
+++ src/runtime/visitors/profile_visitor_impl.cpp	2014-02-24 23:33:07 +0000
@@ -0,0 +1,370 @@
+/*
+ * Copyright 2006-2008 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "stdafx.h"
+
+#include <iostream>
+
+#ifdef ZORBA_WITH_DEBUGGER
+#include "debugger/debugger_commons.h"
+#endif
+#include "functions/udf.h"
+#include "runtime/booleans/BooleanImpl.h"
+#include "runtime/collections/collections.h"
+#include "runtime/core/apply_updates.h"
+#include "runtime/core/arithmetic_impl.h"
+#include "runtime/core/constructors.h"
+#include "runtime/core/flwor_iterator.h"
+#include "runtime/core/fncall_iterator.h"
+#include "runtime/core/gflwor/count_iterator.h"
+#include "runtime/core/gflwor/for_iterator.h"
+#include "runtime/core/gflwor/groupby_iterator.h"
+#include "runtime/core/gflwor/let_iterator.h"
+#include "runtime/core/gflwor/outerfor_iterator.h"
+#include "runtime/core/gflwor/tuplesource_iterator.h"
+#include "runtime/core/gflwor/tuplestream_iterator.h"
+#include "runtime/core/gflwor/where_iterator.h"
+#include "runtime/core/gflwor/window_iterator.h"
+#include "runtime/core/internal_operators.h"
+#include "runtime/core/item_iterator.h"
+#include "runtime/core/nodeid_iterators.h"
+#include "runtime/core/path_iterators.h"
+#include "runtime/core/sequencetypes.h"
+#include "runtime/core/trycatch.h"
+#include "runtime/core/var_iterators.h"
+#ifdef ZORBA_WITH_DEBUGGER
+#include "runtime/debug/debug_iterator.h"
+#endif
+#include "runtime/durations_dates_times/DurationsDatesTimesImpl.h"
+#include "runtime/durations_dates_times/format_dateTime.h"
+#include "runtime/eval/eval.h"
+#ifndef ZORBA_NO_FULL_TEXT
+#include "runtime/full_text/full_text.h"
+#endif
+#include "runtime/hof/dynamic_fncall_iterator.h"
+#include "runtime/hof/function_item_iter.h"
+#include "runtime/indexing/index_ddl.h"
+#include "runtime/json/json_constructors.h"
+#include "runtime/misc/materialize.h"
+#include "runtime/numerics/NumericsImpl.h"
+#include "runtime/scripting/scripting.h"
+#include "runtime/sequences/SequencesImpl.h"
+#include "runtime/update/update.h"
+#include "runtime/visitors/profile_visitor.h"
+
+using namespace std;
+
+namespace zorba {
+
+///////////////////////////////////////////////////////////////////////////////
+
+#if 0
+void
+get_pd( PlanIterator const &pi, PlanState &p_state ) {
+  PlanIteratorState const *const pi_state =
+    StateTraitsImpl<PlanIteratorState>::getState(
+      p_state, pi.getStateOffset()
+    );
+  profile_data const &pd = pi_state->get_profile_data();
+  cerr << "<iterator name=\"" << pi.getNameAsString() << "\" calls=\"" << pd.next_.call_count_ << "\" ms=\"" << pd.next_.cpu_time_ << "\"/>\n";
+}
+#endif
+
+#define PROFILE_VISITOR_DEFINITION(...)                         \
+  void ProfileVisitor::beginVisit( __VA_ARGS__ const &iter ) {  \
+  }                                                             \
+  void ProfileVisitor::endVisit( __VA_ARGS__ const& ) {         \
+  }
+
+PROFILE_VISITOR_DEFINITION( AncestorAxisIterator )
+PROFILE_VISITOR_DEFINITION( AncestorReverseAxisIterator )
+PROFILE_VISITOR_DEFINITION( AncestorSelfAxisIterator )
+PROFILE_VISITOR_DEFINITION( AncestorSelfReverseAxisIterator )
+PROFILE_VISITOR_DEFINITION( AndIterator )
+PROFILE_VISITOR_DEFINITION( ApplyIterator )
+PROFILE_VISITOR_DEFINITION( ArgumentPlaceholderIterator )
+PROFILE_VISITOR_DEFINITION( AtomicValuesEquivalenceIterator )
+PROFILE_VISITOR_DEFINITION( AttributeAxisIterator )
+PROFILE_VISITOR_DEFINITION( AttributeIterator )
+PROFILE_VISITOR_DEFINITION( CastableIterator )
+PROFILE_VISITOR_DEFINITION( CastIterator )
+PROFILE_VISITOR_DEFINITION( ChildAxisIterator )
+PROFILE_VISITOR_DEFINITION( CommentIterator )
+PROFILE_VISITOR_DEFINITION( CompareIterator )
+PROFILE_VISITOR_DEFINITION( CreateIndexIterator )
+PROFILE_VISITOR_DEFINITION( CreateInternalIndexIterator )
+PROFILE_VISITOR_DEFINITION( CtxVarAssignIterator )
+PROFILE_VISITOR_DEFINITION( CtxVarDeclareIterator )
+PROFILE_VISITOR_DEFINITION( CtxVarIsSetIterator )
+PROFILE_VISITOR_DEFINITION( CtxVarIterator )
+#ifdef ZORBA_WITH_DEBUGGER
+PROFILE_VISITOR_DEFINITION( DebuggerSingletonIterator )
+#endif
+PROFILE_VISITOR_DEFINITION( DeleteIndexIterator )
+PROFILE_VISITOR_DEFINITION( DeleteIterator )
+PROFILE_VISITOR_DEFINITION( DescendantAxisIterator )
+PROFILE_VISITOR_DEFINITION( DescendantSelfAxisIterator )
+PROFILE_VISITOR_DEFINITION( DocumentIterator )
+PROFILE_VISITOR_DEFINITION( EitherNodesOrAtomicsIterator )
+PROFILE_VISITOR_DEFINITION( ElementIterator )
+PROFILE_VISITOR_DEFINITION( EmptyIterator )
+PROFILE_VISITOR_DEFINITION( EnclosedIterator )
+PROFILE_VISITOR_DEFINITION( EvalIterator )
+PROFILE_VISITOR_DEFINITION( ExitCatcherIterator )
+PROFILE_VISITOR_DEFINITION( ExitIterator )
+PROFILE_VISITOR_DEFINITION( ExtFunctionCallIterator )
+PROFILE_VISITOR_DEFINITION( FlowCtlIterator )
+PROFILE_VISITOR_DEFINITION( flwor::CountIterator )
+PROFILE_VISITOR_DEFINITION( flwor::FLWORIterator )
+PROFILE_VISITOR_DEFINITION( flwor::ForIterator )
+PROFILE_VISITOR_DEFINITION( flwor::GroupByIterator )
+PROFILE_VISITOR_DEFINITION( flwor::LetIterator )
+PROFILE_VISITOR_DEFINITION( flwor::OrderByIterator )
+PROFILE_VISITOR_DEFINITION( flwor::OuterForIterator )
+PROFILE_VISITOR_DEFINITION( flwor::TupleSourceIterator )
+PROFILE_VISITOR_DEFINITION( flwor::TupleStreamIterator )
+PROFILE_VISITOR_DEFINITION( flwor::WhereIterator )
+PROFILE_VISITOR_DEFINITION( flwor::WindowIterator )
+PROFILE_VISITOR_DEFINITION( FnAdjustToTimeZoneIterator_1 )
+PROFILE_VISITOR_DEFINITION( FnAdjustToTimeZoneIterator_2 )
+PROFILE_VISITOR_DEFINITION( FnBooleanIterator )
+PROFILE_VISITOR_DEFINITION( FnDateTimeConstructorIterator )
+PROFILE_VISITOR_DEFINITION( FnFormatDateTimeIterator )
+PROFILE_VISITOR_DEFINITION( FnMinMaxIterator )
+PROFILE_VISITOR_DEFINITION( FollowingAxisIterator )
+PROFILE_VISITOR_DEFINITION( ForVarIterator )
+#ifndef ZORBA_NO_FULL_TEXT
+PROFILE_VISITOR_DEFINITION( FTContainsIterator )
+#endif
+PROFILE_VISITOR_DEFINITION( FunctionItemIterator )
+PROFILE_VISITOR_DEFINITION( GeneralIndexEntryBuilderIterator )
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<AddOperation> )
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<DivideOperation>)
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<IntegerDivideOperation> )
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<ModOperation> )
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<MultiplyOperation> )
+PROFILE_VISITOR_DEFINITION( GenericArithIterator<SubtractOperation> )
+PROFILE_VISITOR_DEFINITION( HoistIterator )
+PROFILE_VISITOR_DEFINITION( IfThenElseIterator )
+PROFILE_VISITOR_DEFINITION( InsertIterator )
+PROFILE_VISITOR_DEFINITION( InstanceOfIterator )
+PROFILE_VISITOR_DEFINITION( JSONArrayIterator )
+PROFILE_VISITOR_DEFINITION( JSONDirectObjectIterator )
+PROFILE_VISITOR_DEFINITION( JSONObjectIterator )
+PROFILE_VISITOR_DEFINITION( LetVarIterator )
+PROFILE_VISITOR_DEFINITION( LoopIterator )
+PROFILE_VISITOR_DEFINITION( LSiblingAxisIterator )
+PROFILE_VISITOR_DEFINITION( LSiblingReverseAxisIterator )
+PROFILE_VISITOR_DEFINITION( MaterializeIterator )
+PROFILE_VISITOR_DEFINITION( MultiDynamicFnCallIterator )
+PROFILE_VISITOR_DEFINITION( NameCastIterator )
+PROFILE_VISITOR_DEFINITION( NamespaceIterator )
+PROFILE_VISITOR_DEFINITION( NodeDistinctIterator )
+PROFILE_VISITOR_DEFINITION( NodeSortIterator )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<AddOperation> )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<DivideOperation> )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<IntegerDivideOperation> )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<ModOperation> )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<MultiplyOperation> )
+PROFILE_VISITOR_DEFINITION( NumArithIterator<SubtractOperation> )
+PROFILE_VISITOR_DEFINITION( OpDoubleUnaryIterator )
+PROFILE_VISITOR_DEFINITION( OpNumericUnaryIterator )
+PROFILE_VISITOR_DEFINITION( OrIterator )
+PROFILE_VISITOR_DEFINITION( ParentAxisIterator )
+PROFILE_VISITOR_DEFINITION( PiIterator )
+PROFILE_VISITOR_DEFINITION( PrecedingAxisIterator )
+PROFILE_VISITOR_DEFINITION( PrecedingReverseAxisIterator )
+PROFILE_VISITOR_DEFINITION( ProbeIndexPointGeneralIterator )
+PROFILE_VISITOR_DEFINITION( ProbeIndexPointValueIterator )
+PROFILE_VISITOR_DEFINITION( ProbeIndexRangeGeneralIterator )
+PROFILE_VISITOR_DEFINITION( ProbeIndexRangeValueIterator )
+PROFILE_VISITOR_DEFINITION( PromoteIterator )
+PROFILE_VISITOR_DEFINITION( RefreshIndexIterator )
+PROFILE_VISITOR_DEFINITION( RenameIterator )
+PROFILE_VISITOR_DEFINITION( ReplaceIterator )
+PROFILE_VISITOR_DEFINITION( RSiblingAxisIterator )
+PROFILE_VISITOR_DEFINITION( SelfAxisIterator )
+PROFILE_VISITOR_DEFINITION( SequentialIterator )
+PROFILE_VISITOR_DEFINITION( SingleDynamicFnCallIterator )
+PROFILE_VISITOR_DEFINITION( SingletonIterator )
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<AddOperation,store::XS_DECIMAL>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<AddOperation,store::XS_DOUBLE>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<AddOperation,store::XS_FLOAT>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<AddOperation,store::XS_INTEGER>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<DivideOperation,store::XS_DECIMAL>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<DivideOperation,store::XS_DOUBLE>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<DivideOperation,store::XS_FLOAT>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<DivideOperation,store::XS_INTEGER>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<ModOperation,store::XS_DECIMAL>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<ModOperation,store::XS_DOUBLE>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<ModOperation,store::XS_FLOAT>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<ModOperation,store::XS_INTEGER>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<MultiplyOperation,store::XS_DECIMAL>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<MultiplyOperation,store::XS_DOUBLE>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<MultiplyOperation,store::XS_FLOAT>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<MultiplyOperation,store::XS_INTEGER>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<SubtractOperation,store::XS_DECIMAL>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<SubtractOperation,store::XS_DOUBLE>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<SubtractOperation,store::XS_FLOAT>)
+PROFILE_VISITOR_DEFINITION( SpecificNumArithIterator<SubtractOperation,store::XS_INTEGER>)
+PROFILE_VISITOR_DEFINITION( TextIterator )
+PROFILE_VISITOR_DEFINITION( TransformIterator )
+PROFILE_VISITOR_DEFINITION( TreatIterator )
+PROFILE_VISITOR_DEFINITION( TryCatchIterator )
+PROFILE_VISITOR_DEFINITION( TypedValueCompareIterator<store::XS_DECIMAL> )
+PROFILE_VISITOR_DEFINITION( TypedValueCompareIterator<store::XS_DOUBLE> )
+PROFILE_VISITOR_DEFINITION( TypedValueCompareIterator<store::XS_FLOAT> )
+PROFILE_VISITOR_DEFINITION( TypedValueCompareIterator<store::XS_INTEGER> )
+PROFILE_VISITOR_DEFINITION( TypedValueCompareIterator<store::XS_STRING> )
+PROFILE_VISITOR_DEFINITION( UDFunctionCallIterator )
+PROFILE_VISITOR_DEFINITION( UnhoistIterator )
+PROFILE_VISITOR_DEFINITION( ValueIndexEntryBuilderIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaApplyInsertAfterIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaApplyInsertBeforeIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaApplyInsertFirstIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaApplyInsertIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaApplyInsertLastIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaInsertAfterIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaInsertBeforeIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaInsertFirstIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaInsertIterator )
+PROFILE_VISITOR_DEFINITION( ZorbaInsertLastIterator )
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ProfileVisitor::beginVisitFlworWhereClause(const PlanIterator& a) {
+}
+
+void ProfileVisitor::endVisitFlworWhereClause(const PlanIterator& ) {
+}
+
+void ProfileVisitor::beginVisitFlworLetVariable(
+    bool materialize,
+    const zstring& varName,
+    const std::vector<PlanIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitFlworLetVariable() {
+}
+
+void ProfileVisitor::beginVisitFlworForVariable(
+    const zstring& varName,
+    const std::vector<PlanIter_t>& varRefs,
+    const std::vector<PlanIter_t>& posRefs)
+{
+}
+
+void ProfileVisitor::endVisitFlworForVariable() {
+}
+
+void ProfileVisitor::beginVisitOrderBySpec(const PlanIterator& a) {
+}
+
+void ProfileVisitor::endVisitOrderBySpec(const PlanIterator& ) {
+}
+
+void ProfileVisitor::beginVisitOrderByForVariable(
+    ForVarIter_t inputVar,
+    const std::vector<PlanIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitOrderByForVariable() {
+}
+
+void ProfileVisitor::beginVisitOrderByLetVariable(
+    LetVarIter_t inputVar,
+    const std::vector<PlanIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitOrderByLetVariable() {
+}
+
+void ProfileVisitor::beginVisitMaterializeClause() {
+}
+
+void ProfileVisitor::endVisitMaterializeClause() {
+}
+
+void ProfileVisitor::beginVisitMaterializeVariable(
+    bool forVar,
+    PlanIter_t inputVar,
+    const std::vector<PlanIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitMaterializeVariable() {
+}
+
+void ProfileVisitor::beginVisitGroupByClause() {
+}
+
+void ProfileVisitor::endVisitGroupByClause() {
+}
+
+void ProfileVisitor::beginVisitGroupBySpec() {
+}
+
+void ProfileVisitor::endVisitGroupBySpec() {
+}
+
+void ProfileVisitor::beginVisitGroupByOuter() {
+}
+
+void ProfileVisitor::endVisitGroupByOuter() {
+}
+
+void ProfileVisitor::beginVisitGroupVariable(const std::vector<ForVarIter_t>& varRefs) {
+}
+
+void ProfileVisitor::endVisitGroupVariable() {
+}
+
+void ProfileVisitor::beginVisitNonGroupVariable(const std::vector<LetVarIter_t>& varRefs) {
+}
+
+void ProfileVisitor::endVisitNonGroupVariable() {
+}
+
+void ProfileVisitor::beginVisitWindowVariable(
+    const std::string& varName,
+    const std::vector<LetVarIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitWindowVariable() {
+}
+
+void ProfileVisitor::beginVisitWinCondVariable(
+    const zstring& varName,
+    const std::vector<PlanIter_t>& varRefs)
+{
+}
+
+void ProfileVisitor::endVisitWinCondVariable() {
+}
+
+void ProfileVisitor::beginVisitFlworReturn( const PlanIterator& a) {
+}
+
+void ProfileVisitor::endVisitFlworReturn( const PlanIterator& ) {
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+} // namespace zorba
+/* vim:set et sw=2 ts=2: */

=== modified file 'src/runtime/xqdoc/pregenerated/xqdoc.cpp'
--- src/runtime/xqdoc/pregenerated/xqdoc.cpp	2014-01-31 01:39:38 +0000
+++ src/runtime/xqdoc/pregenerated/xqdoc.cpp	2014-02-24 23:33:07 +0000
@@ -58,6 +58,10 @@
 
 XQDocContentIterator::~XQDocContentIterator() {}
 
+
+zstring XQDocContentIterator::getNameAsString() const {
+  return "fn-zorba-xqdoc:xqdoc-content-impl";
+}
 // </XQDocContentIterator>
 
 

=== modified file 'src/runtime/xqdoc/pregenerated/xqdoc.h'
--- src/runtime/xqdoc/pregenerated/xqdoc.h	2014-01-31 01:39:38 +0000
+++ src/runtime/xqdoc/pregenerated/xqdoc.h	2014-02-24 23:33:07 +0000
@@ -58,6 +58,8 @@
 
   virtual ~XQDocContentIterator();
 
+  zstring getNameAsString() const;
+
   void accept(PlanIterVisitor& v) const;
 
   bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;

=== modified file 'src/util/time_util.h'
--- src/util/time_util.h	2013-06-13 01:21:36 +0000
+++ src/util/time_util.h	2014-02-24 23:33:07 +0000
@@ -27,8 +27,18 @@
 #include <zorba/config.h>
 #include <zorba/internal/cxx_util.h>
 #include <zorba/util/calendar.h>
+#include <zorba/util/time.h>
 #include "string_util.h"
 
+#if defined(ZORBA_HAVE_CLOCKGETTIME) && defined(_POSIX_CPUTIME)
+typedef struct timespec time_type;
+#elif defined(ZORBA_HAVE_GETRUSAGE)
+#include <sys/resource.h>               /* for getrusage(2) */
+typedef struct timeval time_type;
+#else
+typedef struct { clock_t value; } time_type;
+#endif
+
 #ifndef TM_YEAR_BASE
 # define TM_YEAR_BASE 1900
 #endif
@@ -267,6 +277,15 @@
 void get_epoch( sec_type *sec, usec_type *usec = nullptr );
 
 /**
+ * Gets the number of seconds and microseconds since epoch.
+ *
+ * @param tv A pointer to the result.
+ */
+inline void get_epoch( timeval *tv ) {
+  return get_epoch( &tv->tv_sec, &tv->tv_usec );
+}
+
+/**
  * Gets the Greenwich time and populates the given ztm structure.
  *
  * @param tm A pointer to the ztm struct to populate.
@@ -362,6 +381,77 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
+namespace cpu {
+
+/**
+ * Gets a monotonically increasing value for the current CPU time.
+ *
+ * @param t A pointer to the result.
+ */
+inline void get_time( time_type *t ) {
+#if defined(ZORBA_HAVE_CLOCKGETTIME) && defined(_POSIX_CPUTIME)
+  clock_gettime( CLOCK_PROCESS_CPUTIME_ID, t );
+#elif defined(ZORBA_HAVE_GETRUSAGE)
+  struct rusage ru;
+  getrusage( RUSAGE_SELF, &ru );
+  *t = ru.ru_utime;
+#else
+  t->value = clock();
+#endif
+}
+
+/**
+ * Calculates the difference between two times.
+ *
+ * @param t1 The later time.
+ * @param t0 The earlier time.
+ * @return Returns the difference in milliseconds.
+ */
+inline msec_type operator-( time_type const &t1, time_type const &t0 ) {
+#if defined(ZORBA_HAVE_CLOCKGETTIME) && defined(_POSIX_CPUTIME)
+  return (t1.tv_sec  - t0.tv_sec) * 1000
+       + (t1.tv_nsec - t0.tv_nsec + 50000) / 1000000;
+#elif defined(ZORBA_HAVE_GETRUSAGE)
+  return (t1.tv_sec  - t0.tv_sec) * 1000
+       + (t1.tv_usec - t0.tv_usec + 500) / 1000;
+#else
+  return (t1.value - t0.value) / (CLOCKS_PER_SEC / 1000);
+#endif
+}
+
+/**
+ * A %timer class is used to measure the amount of CPU time used by some block
+ * of code.
+ */
+class timer {
+public:
+  /**
+   * Starts the timer.  Calling this function again resets the start time.
+   */
+  void start() {
+    get_time( &start_ );
+  }
+
+  /**
+   * Gets the amount of time that has elapsed since the last time start() was 
+   * called.
+   *
+   * @return Returns said amount of time in milliseconds.
+   */
+  msec_type elapsed() const {
+    time_type now;
+    get_time( &now );
+    return now - start_;
+  }
+
+private:
+  time_type start_;
+};
+
+} // namespace cpu
+
+///////////////////////////////////////////////////////////////////////////////
+
 } // namespace time
 } // namespace zorba
 #endif /* ZORBA_TIME_UTIL_H */


Follow ups