private List<Item> createCopyAsChildMenuItems(final DocRef docRef) {
        // If a user has VIEW on a doc they will also see (but not have VIEW) all ancestor
        // docs, so we need to only allow 'copy name' for these 'see but not view' cases.
        // Thus, totalCount may be bigger than readableCount
        final List<Item> childMenuItems = new ArrayList<>();
        int priority = 1;
        if (NullSafe.isNonBlankString(docRef.getName())) {
            childMenuItems.add(new IconMenuItem.Builder()
                    .priority(priority++)
                    .icon(SvgImage.COPY)
                    .text("Copy Name to Clipboard")
                    .enabled(true)
                    .command(() -> ClipboardUtil.copy(docRef.getName()))
                    .build());
        }
        if (NullSafe.isNonBlankString(docRef.getUuid())) {
            childMenuItems.add(new IconMenuItem.Builder()
                    .priority(priority++)
                    .icon(SvgImage.COPY)
                    .text("Copy UUID to Clipboard")
                    .enabled(true)
                    .command(() -> ClipboardUtil.copy(docRef.getUuid()))
                    .build());
        }
        childMenuItems.add(createCopyLinkMenuItem(docRef, priority++));
        return childMenuItems;
    }
@param showIcon         Set to true to show the type icon next to the text
@param cellTextFunction Function to provide the cell 'text' in HTML form.
@param docRefFunction   Function to provide a doc ref if the value can give us one.
@param cssClassFunction Function to provide additional css class names.
stroom-core-client/src/main/java/stroom/data/client/presenter/DocRefCell.java