MqPatchDetails (@Nullable VirtualFile root, @NotNull String context) { String[] lines = StringUtil.splitByLines(context, false); String user = null; Date date = null; String branch = null; List<String> messageLines = new ArrayList<>(); String nodeId = null; String parent = null; for (String line : lines) { if (line.startsWith(DIFF_INFO)) { break; } else if (line.startsWith(NODE_ID)) { nodeId = extractField(line, NODE_ID); } else if (line.startsWith(PARENT_ID)) { parent = extractField(line, PARENT_ID); } else if (line.startsWith(DATE)) { date = tryParseDate(extractField(line, DATE)); } else if (line.startsWith(BRANCH)) { branch = extractField(line, BRANCH); } else if (line.startsWith(USER)) { user = extractField(line, USER); } else if (!line.startsWith("# ")) { messageLines.add(line); } } return new MqPatchDetails(nodeId, parent, date, root, branch, StringUtil.join(messageLines, "\n"), user); }