void (PsiReferenceExpression ref, PsiCodeBlock block, PsiStatement[] originalStatements, PsiLocalVariable thisVar) { PsiClass containingClass = myMethod.getContainingClass(); String lockName = null; if (thisVar != null) { lockName = thisVar.getName(); } else if (myMethod.hasModifierProperty(PsiModifier.STATIC) && containingClass != null ) { lockName = containingClass.getQualifiedName() + ".class"; } if (lockName != null && syncNeeded(ref)) { PsiSynchronizedStatement synchronizedStatement = (PsiSynchronizedStatement)myFactory.createStatementFromText("synchronized(" + lockName + "){}", block); synchronizedStatement = (PsiSynchronizedStatement)CodeStyleManager.getInstance(myProject).reformat(synchronizedStatement); synchronizedStatement = (PsiSynchronizedStatement)block.add(synchronizedStatement); final PsiCodeBlock synchronizedBody = Objects.requireNonNull(synchronizedStatement.getBody()); for (final PsiStatement originalStatement : originalStatements) { synchronizedBody.add(originalStatement); originalStatement.delete(); } } }