String () { Set<String> stringKeys = getStringKeys(); List<Couple<PsiType>> otherEntries = getOtherEntries(); if (stringKeys.isEmpty()) { if (otherEntries.isEmpty()) return "[:]"; String name = getJavaClassName(); final PsiType[] params = getParameters(); if (params.length == 2) { return name + "<" + getInternalText(params[0]) + ", " + getInternalText(params[1]) + ">"; } else { return name; } } List<String> components = new ArrayList<>(); for (String s : stringKeys) { components.add("'" + s + "':" + getInternalCanonicalText(getTypeByStringKey(s))); } for (Couple<PsiType> entry : otherEntries) { components.add(getInternalCanonicalText(entry.first) + ":" + getInternalCanonicalText(entry.second)); } boolean tooMany = components.size() > 2; final List<String> theFirst = ContainerUtil.getFirstItems(components, 2); return "[" + StringUtil.join(theFirst, ", ") + (tooMany ? ",..." : "") + "]"; }