boolean () { // TODO support glued/concatenated string literal with multiple nodes if (myPyString.getStringNodes().size() > 1 || myNodeInfo.isBytes() || myNodeInfo.isFormatted()) return false; final PsiElement valuesSource = getValuesSource(); if (valuesSource == null) return false; final List<T> chunks = extractAllSubstitutionChunks(); for (T chunk : chunks) { if (!checkChunk(chunk)) return false; final PySubstitutionChunkReference reference = createReference(chunk); final PyExpression referencedExpr = adjustResolveResult(reference.resolve()); if (referencedExpr == null) return false; if (!PsiTreeUtil.isAncestor(valuesSource, referencedExpr, false)) return false; if (referencedExpr instanceof PyStarExpression || referencedExpr instanceof PyStarArgument) return false; if (!checkReferencedExpression(chunks, chunk, valuesSource, referencedExpr)) return false; } return true; }