TypeInfo (@NotNull PsiElement parent, @NotNull PsiElement elementToBuildTemplateOn) { GrModifierList modifierList = getModifierList(parent); if (modifierList != null && modifierList.hasModifierProperty(GrModifier.DEF) && modifierList.getModifiers().length == 1) { PsiElement modifier = modifierList.getModifier(GrModifier.DEF); LOG.assertTrue(modifier != null); int modifierOffset = modifier.getTextRange().getEndOffset() - elementToBuildTemplateOn.getTextRange().getStartOffset(); return new TypeInfo(modifier, modifierOffset); } else { int nameElementOffset; final PsiClassType typeToUse = TypesUtil.createType("Abc", parent); if (elementToBuildTemplateOn instanceof GrVariableDeclaration decl) { decl.setType(typeToUse); nameElementOffset = decl.getModifierList().getTextRange().getEndOffset() - elementToBuildTemplateOn.getTextRange().getStartOffset(); } else { GrVariable var = (GrVariable)parent; var.setType(typeToUse); nameElementOffset = var.getNameIdentifierGroovy().getTextRange().getStartOffset() - elementToBuildTemplateOn.getTextRange().getStartOffset(); } return new TypeInfo(getTypeElement(parent), nameElementOffset); } }