void (@NotNull TransformationContext context) { GrTypeDefinition psiClass = context.getCodeClass(); if (psiClass.isAnonymous() || psiClass.isInterface() || psiClass.isEnum()) { return; } if (!hasInheritConstructorsAnnotation(psiClass)) return; final PsiClass hierarchyView = context.getHierarchyView(); final PsiClass superClass = hierarchyView.getSuperClass(); if (superClass == null) return; final PsiSubstitutor superClassSubstitutor = TypeConversionUtil.getSuperClassSubstitutor( superClass, hierarchyView, PsiSubstitutor.EMPTY ); for (PsiMethod constructor : superClass.getConstructors()) { if (constructor.hasModifierProperty(PsiModifier.PRIVATE)) continue; final GrLightMethodBuilder inheritedConstructor = new GrLightMethodBuilder(context.getManager(), context.getClassName()); inheritedConstructor.setConstructor(true); inheritedConstructor.setNavigationElement(psiClass); inheritedConstructor.addModifier(VisibilityUtil.getVisibilityModifier(constructor.getModifierList())); inheritedConstructor.setOriginInfo("created by @InheritConstructors"); for (PsiParameter parameter : constructor.getParameterList().getParameters()) { String name = parameter.getName(); PsiType type = superClassSubstitutor.substitute(parameter.getType()); inheritedConstructor.addParameter(name, type); } context.addMethod(inheritedConstructor); } }