boolean (@NotNull DfType type) { if (type == DfType.BOTTOM) return false; // Complex value from field or method return call may contain back-reference to the object, so // local value could leak. Do not drop locality only for some simple values. while (true) { TypeConstraint constraint = TypeConstraint.fromDfType(type); DfType arrayComponentType = constraint.getArrayComponentType(); if (arrayComponentType == DfType.BOTTOM) { return !(type instanceof DfPrimitiveType) && !constraint.isExact(CommonClassNames.JAVA_LANG_STRING) && !constraint.isExact(CommonClassNames.JAVA_LANG_CLASS); } type = arrayComponentType; } }