diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileSystem.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileSystem.java
index 7b366b2..2c6778b 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileSystem.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileSystem.java
@@ -89,11 +89,10 @@
     private final boolean execDisabled;
 
     protected SftpFileSystem(final GenericFileName rootName, final Session session,
-            final FileSystemOptions fileSystemOptions) {
+        final FileSystemOptions fileSystemOptions) {
         super(rootName, null, fileSystemOptions);
         this.session = Objects.requireNonNull(session, "session");
-        this.connectTimeout = SftpFileSystemConfigBuilder.getInstance()
-            .getConnectTimeout(fileSystemOptions);
+        this.connectTimeout = SftpFileSystemConfigBuilder.getInstance().getConnectTimeout(fileSystemOptions);
 
         if (SftpFileSystemConfigBuilder.getInstance().isDisableDetectExecChannel(fileSystemOptions)) {
             this.execDisabled = true;
@@ -142,20 +141,20 @@
                 channel = (ChannelSftp) getSession().openChannel("sftp");
                 channel.connect(DurationUtils.toMillisInt(connectTimeout));
                 final Boolean userDirIsRoot = SftpFileSystemConfigBuilder.getInstance()
-                        .getUserDirIsRoot(getFileSystemOptions());
+                    .getUserDirIsRoot(getFileSystemOptions());
                 final String workingDirectory = getRootName().getPath();
                 if (workingDirectory != null && (userDirIsRoot == null || !userDirIsRoot.booleanValue())) {
                     try {
                         channel.cd(workingDirectory);
                     } catch (final SftpException e) {
                         throw new FileSystemException("vfs.provider.sftp/change-work-directory.error", workingDirectory,
-                                e);
+                            e);
                     }
                 }
             }
 
             final String fileNameEncoding = SftpFileSystemConfigBuilder.getInstance()
-                    .getFileNameEncoding(getFileSystemOptions());
+                .getFileNameEncoding(getFileSystemOptions());
 
             if (fileNameEncoding != null) {
                 try {
@@ -181,7 +180,7 @@
                 if (!this.session.isConnected()) {
                     doCloseCommunicationLink();
                     this.session = SftpFileProvider.createSession((GenericFileName) getRootName(),
-                            getFileSystemOptions());
+                        getFileSystemOptions());
                 }
             }
         }
