Template (Project project, String exprText, PsiType[] suggestedTypes) { TemplateManager templateManager = TemplateManager.getInstance(project); Template template = templateManager.createTemplate("", ""); template.setToReformat(true); Set<LookupElement> itemSet = new LinkedHashSet<>(); for (PsiType type : suggestedTypes) { itemSet.add(PsiTypeLookupItem.createLookupItem(type, null)); } final Result result = suggestedTypes.length > 0 ? new PsiTypeResult(suggestedTypes[0], project) : null; Expression expr = new ConstantNode(result).withLookupItems(itemSet.size() > 1 ? itemSet : Collections.emptySet()); template.addTextSegment(exprText); template.addTextSegment(" instanceof "); String type = "type"; template.addVariable(type, expr, expr, true); template.addTextSegment(" ? (("); template.addVariableSegment(type); template.addTextSegment(")" + exprText + ")"); template.addEndVariable(); template.addTextSegment(" : null;"); return template; }