diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationIntention.java
new file mode 100644
index 000000000000..34b4c39376d9
--- /dev/null
+++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationIntention.java
@@ -0,0 +1,55 @@
+package com.siyeh.ipp.initialization;
+
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
+import com.intellij.util.IncorrectOperationException;
+import com.siyeh.ipp.base.Intention;
+import com.siyeh.ipp.base.PsiElementPredicate;
+
+public class SplitDeclarationAndInitializationIntention extends Intention{
+ protected PsiElementPredicate getElementPredicate(){
+ return new SplitDeclarationAndInitializationPredicate();
+ }
+
+ public String getText(){
+ return "Split into declaration and initialization";
+ }
+
+ public String getFamilyName(){
+ return "Split Declaration And Initialization";
+ }
+
+ public void invoke(Project project, Editor editor, PsiFile file)
+ throws IncorrectOperationException{
+ final PsiField field =
+ (PsiField) findMatchingElement(file, editor);
+ field.normalizeDeclaration();
+ final PsiExpression initializer = field.getInitializer();
+ final String initializerText = initializer.getText();
+ final PsiManager psiManager = field.getManager();
+ final PsiElementFactory elementFactory = psiManager.getElementFactory();
+ PsiClassInitializer classInitializer =
+ elementFactory.createClassInitializer();
+ final PsiClass containingClass = field.getContainingClass();
+ classInitializer = (PsiClassInitializer) containingClass.addAfter(classInitializer,
+ field);
+ final PsiCodeBlock body = classInitializer.getBody();
+ final String initializationStatementText =
+ field.getName() + " = " + initializerText + ';';
+ final PsiExpressionStatement statement =
+ (PsiExpressionStatement) elementFactory.createStatementFromText(
+ initializationStatementText, body);
+ body.add(statement);
+ if(field.hasModifierProperty(PsiModifier.STATIC)){
+ final PsiModifierList modifierList =
+ classInitializer.getModifierList();
+ modifierList.setModifierProperty(PsiModifier.STATIC, true);
+ }
+ initializer.delete();
+ final CodeStyleManager codeStyleManager = psiManager.getCodeStyleManager();
+ codeStyleManager.reformat(field);
+ codeStyleManager.reformat(classInitializer);
+ }
+}
diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationPredicate.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationPredicate.java
new file mode 100644
index 000000000000..dfdb660ad372
--- /dev/null
+++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/initialization/SplitDeclarationAndInitializationPredicate.java
@@ -0,0 +1,22 @@
+package com.siyeh.ipp.initialization;
+
+import com.siyeh.ipp.base.PsiElementPredicate;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiField;
+import com.intellij.psi.PsiExpression;
+
+public class SplitDeclarationAndInitializationPredicate
+ implements PsiElementPredicate{
+ public boolean satisfiedBy(PsiElement element){
+ if(!(element instanceof PsiField)){
+ return false;
+ }
+ final PsiField field = (PsiField) element;
+ final PsiExpression initializer = field.getInitializer();
+ if(initializer == null)
+ {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/after.java.template b/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/after.java.template
new file mode 100644
index 000000000000..1d04adc264b8
--- /dev/null
+++ b/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/after.java.template
@@ -0,0 +1,6 @@
+public class X {
+ int i;
+ {
+ i = 65535;
+ }
+}
\ No newline at end of file
diff --git a/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/before.java.template b/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/before.java.template
new file mode 100644
index 000000000000..86943531bf8c
--- /dev/null
+++ b/plugins/IntentionPowerPak/src/intentionDescriptions/Split Declaration And Initialization/before.java.template
@@ -0,0 +1,3 @@
+public class X {
+