String () { if (myElementType != null) { int elementTypeStubVersion = myElementType.getStubVersion(); if (myElementType.getLanguage() instanceof TemplateLanguage) { int templateStubBaseVersion = IStubFileElementType.getTemplateStubBaseVersion(); if (elementTypeStubVersion < templateStubBaseVersion) { PluginException.logPluginError(LOG, myElementType.getClass() + " " + myElementType.getLanguage() + " version=" + elementTypeStubVersion + " " + " stub version should call super.getStubVersion() " + " template stub version=" + templateStubBaseVersion, null, myElementType.getClass()); } } String baseVersion = myElementType.getExternalId() + ":" + elementTypeStubVersion + ":" + myElementType.getDebugName(); return myProperties.isEmpty() ? baseVersion : (baseVersion + ":" + StringUtil.join(myProperties, ",")); } else { assert myBinaryFileStubBuilder != null; String baseVersion = myBinaryFileStubBuilder.getClass().getName() + ":" + myBinaryFileStubBuilder.getStubVersion(); if (myBinaryFileStubBuilder instanceof BinaryFileStubBuilder.CompositeBinaryFileStubBuilder) { return baseVersion + ":" + ((BinaryFileStubBuilder.CompositeBinaryFileStubBuilder)myBinaryFileStubBuilder).getSubBuilderVersion(myBinarySubBuilder); } else { return baseVersion; } } }