@Override
        public PsiType fun(GrAssignmentExpressionImpl assignment) {
          final GroovyResolveResult[] results = assignment.multiResolve(false);

          if (results.length == 0) {
            final GrExpression rValue = assignment.getRValue();
            return rValue == null ? null : rValue.getType();
          }

          PsiType returnType = null;
          final PsiManager manager = assignment.getManager();
          for (GroovyResolveResult result : results) {
            final PsiType substituted =
                ResolveUtil.extractReturnTypeFromCandidate(result, assignment);
            returnType = TypesUtil.getLeastUpperBoundNullable(returnType, substituted, manager);
          }
          return returnType;
        }