code: protected static KeyValueNode<?> transformMetaData(final CSNodeWrapper node, final Map<Integer, Node> nodes,
              final Map<String, SpecTopic> targetTopics, final List<CSNodeWrapper> relationshipFromNodes) {
          final KeyValueNode<?> keyValueNode;
          if (node.getTitle().equalsIgnoreCase(CommonConstants.CS_BOOK_TYPE_TITLE)) {
              keyValueNode = new KeyValueNode<BookType>(node.getTitle(), BookType.getBookType(node.getAdditionalText()));
          } else if (node.getTitle().equalsIgnoreCase(CommonConstants.CS_INLINE_INJECTION_TITLE)) {
              keyValueNode = new KeyValueNode<InjectionOptions>(node.getTitle(), new InjectionOptions(node.getAdditionalText()));
          } else if (node.getNodeType().equals(CommonConstants.CS_NODE_META_DATA_TOPIC)) {
              final SpecTopic specTopic = transformSpecTopicWithoutTypeCheck(node, nodes, targetTopics, relationshipFromNodes);
              keyValueNode = new KeyValueNode<SpecTopic>(node.getTitle(), specTopic);
          } else if (node.getTitle().equalsIgnoreCase(CommonConstants.CS_FILE_SHORT_TITLE) || node.getTitle().equalsIgnoreCase(
                  CommonConstants.CS_FILE_TITLE)) {
              keyValueNode = transformFileList(node);
          } else {
              keyValueNode = new KeyValueNode<String>(node.getTitle(), node.getAdditionalText());
          }
          keyValueNode.setUniqueId(node.getId() == null ? null : node.getId().toString());
  
          return keyValueNode;
      }
docs: Transforms a MetaData CSNode into a KeyValuePair that can be added to a ContentSpec object.
  
  @param node                  The CSNode to be transformed.
  @param nodes                 A mapping of node entity ids to their transformed counterparts.
  @param targetTopics          A mapping of target ids to SpecTopics.
  @param relationshipFromNodes A list of CSNode entities that have relationships.
  @return The transformed KeyValuePair object.