   }
   
   /**
+  Checks if the `host` supports the provided authentication `method` for the provided `username`.
+  
+  - parameter method: The name of the authentication method to check against the available methods on the host for the provided `username`.
+  - parameter username: The username that will be used to retrieve authentication methods for.
+  If `nil` the framework will try to retrieve the `username` from the initialization.
+  - parameter session: A valid `SSH2Session` that will be used to retrieve the banner.
+  If `nil` a previously open internal session will be used or an error will be returned.
+  
+  - throws: `UnableToProceedWithoutValidSSH2Session`: When no valid `SSH2Session` was passed or found internally.
+  - throws: `AuthenticationFailed`: When no valid `username` was passed or found internally.
+  - throws: `RetrieveDataOperationError`: When unabled to check authentication methods for the host and username combination.
   */
   public func supportsAuthenticationMethod(method: String, session sess: SSH2Session?=nil, username usr: String?=nil) throws -> Bool {
     /**

  
  - returns: A `Result` with a tuple of (SSH2Session, Fingerprint) for the current 
  host if succeeds or `String` describing the current error.
  */
  public func startConnection(hash: Fingerprint.Hash=Fingerprint.Hash.MD5) throws -> (SSH2Session, Fingerprint) {
    let addrInfo = try self.discoverAddressInfoForHost()

  
  - returns: The host's remote banner (if any) or an error if there's no valid/open `SSH2Session`.
  
  - throws: `UnableToProceedWithoutValidSSH2Session`: When no valid `SSH2Session` was passed or found internally.
  - throws: `RetrieveDataOperationError`: When the host returns an invalid banner.
  */
  public func remoteBanner(session sess: SSH2Session?=nil) throws -> String? {
    /**
