private void processArrayInitializer(final ArrayInitializerExpression node) { final TypeReference expectedArrayType = getExpectedTypeByParent(_resolver, node); if (expectedArrayType == null || !expectedArrayType.isArray()) { return; } final TypeReference target = expectedArrayType.getElementType(); for (final Expression element : node.getElements()) { if (element instanceof CastExpression) { final Expression value = ((CastExpression) element).getExpression(); final TypeReference middle = getType(element); final TypeReference source = getType(value); if (middle != null && source != null && getConversion(target, middle, null).isImplicit() && getConversion(target, source, value).isImplicit() && getConversion(source, middle, null).isImplicit()) { final ConversionType sourceToMiddle = getConversion(middle, source, value); if (sourceToMiddle.isImplicit() && sourceToMiddle.isLossless()) { addToResults((CastExpression) element, false); } } } } }