String (@NotNull List<? extends TemplateImpl> originalGroup, @NotNull List<? extends TemplateImpl> newGroup) { if (originalGroup.size() != newGroup.size()) return "different sizes"; LiveTemplateContextsSnapshot allContexts = LiveTemplateContextService.getInstance().getSnapshot(); for (int i = 0; i < newGroup.size(); i++) { TemplateImpl t1 = newGroup.get(i); TemplateImpl t2 = originalGroup.get(i); if (templatesDiffer(allContexts, t1, t2)) { if (isTest) { return "Templates differ: new=" + t1 + "; original=" + t2 + "; equals=" + t1.equals(t2) + "; vars=" + t1.getVariables().equals(t2.getVariables()) + "; options=" + areOptionsEqual(t1, t2) + "; diff=" + getDifferenceType(allContexts, getTemplateContext(t1), t2.getTemplateContext()) + "\ncontext1=" + getTemplateContext(t1) + "\ncontext2=" + getTemplateContext(t2); } return "templates differ"; } } return null; }