code: public static Element createPlfNodeAndPath(
              Element compViewNode, boolean includeChildNodes, IPerson person)
              throws PortalException {
          // first attempt to get parent
          Element compViewParent = (Element) compViewNode.getParentNode();
          Element plfParent = getPLFNode(compViewParent, person, true, false);
          Document plf = (Document) person.getAttribute(Constants.PLF);
  
          // if ilf copy being created we can append to parent and use the
          // position set to place it.
  
          if (compViewNode
                  .getAttribute(Constants.ATT_ID)
                  .startsWith(Constants.FRAGMENT_ID_USER_PREFIX))
              return createILFCopy(
                      compViewNode, compViewParent, includeChildNodes, plf, plfParent, person);
          return createOrMovePLFOwnedNode(
                  compViewNode,
                  compViewParent,
                  true, // create if not found
                  includeChildNodes,
                  plf,
                  plfParent,
                  person);
      }
docs: Creates a copy of the passed in ILF node in the PLF if not already there as well as creating
  any ancestor nodes along the path from this node up to the layout root if they are not there.