docs: function insert(node, source, insertPoint, refChild){
      node = get(node) || node; // TODO: remove
  
      switch (insertPoint) {
        case undefined: // insertPoint omitted
        case INSERT_END:
          refChild = null;
        break;
        case INSERT_BEGIN:
          refChild = node[FIRST_CHILD];
        break;
        case INSERT_BEFORE:
        break;
        case INSERT_AFTER:
          refChild = refChild[NEXT_SIBLING];
        break;
        default:
          insertPoint = Number(insertPoint);
          refChild = insertPoint >= 0 && insertPoint < node.childNodes.length ? node.childNodes[insertPoint] : null;
      }
  
      var isDOMLikeObject = !isNode(node);
      var result;
  
      if (!source || !Array.isArray(source))
        result = isDOMLikeObject ? source && node.insertBefore(source, refChild) : handleInsert(node, source, refChild);
      else
      {
        if (isDOMLikeObject)
        {
          result = [];
          for (var i = 0, len = source.length; i < len; i++)
            result[i] = node.insertBefore(source[i], refChild);
        }
        else
        {
          node.insertBefore(createFragment.apply(0, source), refChild);
          result = createFragment.array;
        }
      }
  
      return result;
    }