docs: function objectify() {
    
    var args            = Array.prototype.slice.call(arguments)
      , objects         = args.shift()
      , constructors    = args.pop()
      , ast_path        = args.shift()
      
      , child_selector  = ast_path.pop()
      , current_object
      , parrent_object
      
      , current_constructor
      , constructors_length
      ;
  
    if (Array.isArray(objects) === false) {
      
      current_constructor = constructors;
      
      parrent_object = traverse(objects, ast_path);
      current_object = parrent_object[child_selector];
      
      parent_object[child_selector] = new current_constructor(current_object);
      
    } else {
      
      constructors_length = constructors.length
      
      for (var i = 0, ii = constructors.length; i < ii; i++) {
        
        current_constructor = constructors[i % constructors_length];
        
        parrent_object = traverse(objects[i], ast_path);
        current_object = parrent_object[child_selector];
        
        parent_object[child_selector] = new current_constructor(current_object);
        
      }
      
    }
    
  }