boolean (GrCodeReferenceElement element, final Processor<? super GrNewExpression> newExpressionProcessor, final LiteralConstructorSearcher literalProcessor) { PsiElement parent = element.getParent(); if (parent instanceof GrAnonymousClassDefinition) { parent = parent.getParent(); } if (parent instanceof GrNewExpression) { return newExpressionProcessor.process((GrNewExpression)parent); } if (parent instanceof GrTypeElement typeElement) { final PsiElement grandpa = typeElement.getParent(); if (grandpa instanceof GrVariableDeclaration) { final GrVariable[] vars = ((GrVariableDeclaration)grandpa).getVariables(); if (vars.length == 1) { final GrVariable variable = vars[0]; if (!checkLiteralInstantiation(variable.getInitializerGroovy(), literalProcessor)) { return false; } } } else if (grandpa instanceof GrMethod method) { if (typeElement == method.getReturnTypeElementGroovy()) { ControlFlowUtils.visitAllExitPoints(method.getBlock(), new ControlFlowUtils.ExitPointVisitor() { @Override public boolean visitExitPoint(Instruction instruction, @Nullable GrExpression returnValue) { if (!checkLiteralInstantiation(returnValue, literalProcessor)) { return false; } return true; } }); } } else if (grandpa instanceof GrTypeCastExpression) { final GrTypeCastExpression cast = (GrTypeCastExpression)grandpa; if (cast.getCastTypeElement() == typeElement && !checkLiteralInstantiation(cast.getOperand(), literalProcessor)) { return false; } } else if (grandpa instanceof GrSafeCastExpression) { final GrSafeCastExpression cast = (GrSafeCastExpression)grandpa; if (cast.getCastTypeElement() == typeElement && !checkLiteralInstantiation(cast.getOperand(), literalProcessor)) { return false; } } } return true; }