docs: function createBuilder(name,ftask,builderFunc, tasks, parentBuilderInstance) {
          // create root block
          var builderInstance = {};
          builderInstance.name=name;
          builderInstance.ftask = ftask;
          builderInstance.childs = [];
          builderInstance.parent = parentBuilderInstance; // it can be null
  
          var rootTask={
              name: "rootTask",
              def: function () { return {}; },
              exec: function (scope, next) {
                  if (scope.$$input==null){
                      next({});
                  }
                  else
                  {
                      next(scope.$$input);
                  }
              }
          };
          builderInstance.root = createBlock(builderInstance,tasks,null, rootTask,null);
  
          // we can support for child builder ( fork and join support)
          builderInstance.newInstance = function (name,builderFunc) {
              var newInstance = createBuilder(name,ftask,builderFunc, tasks, builderInstance);
              builderInstance.childs.push(newInstance);
              return newInstance;
          }
          
          
          // after end we let use to build the tasks schema
          if (builderFunc!=null){
              builderFunc(builderInstance.root);
          }
          builderInstance.runner=createRunner(builderInstance);
          
          return builderInstance;
      }