void (@NotNull String packageName) { final ASTNode fileNode = getNode(); final GrPackageDefinition currentPackage = getPackageDefinition(); if (packageName.isEmpty()) { if (currentPackage != null) { final ASTNode currNode = currentPackage.getNode(); fileNode.removeChild(currNode); } return; } final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(getProject()); final GrPackageDefinition newPackage = (GrPackageDefinition)factory.createTopElementFromText("package " + packageName); if (currentPackage != null) { final GrCodeReferenceElement packageReference = currentPackage.getPackageReference(); if (packageReference != null) { GrCodeReferenceElement ref = newPackage.getPackageReference(); if (ref != null) { packageReference.replace(ref); } return; } } final ASTNode newNode = newPackage.getNode(); if (currentPackage != null) { final ASTNode currNode = currentPackage.getNode(); fileNode.replaceChild(currNode, newNode); } else { ASTNode anchor = fileNode.getFirstChildNode(); if (anchor != null && anchor.getElementType() == GroovyTokenTypes.mSH_COMMENT) { anchor = anchor.getTreeNext(); fileNode.addLeaf(GroovyTokenTypes.mNLS, "\n", anchor); } fileNode.addChild(newNode, anchor); if (anchor != null && !anchor.getText().startsWith("\n\n")) { fileNode.addLeaf(GroovyTokenTypes.mNLS, "\n", anchor); } } }