Service introduction

Argot2 can be accessed through a SOAP service whose WSDL can be found here.

SOAP allows for a more sophisticated architecture than REST, in particular binary attachments through MTOM (Message Transmission Optimization Mechanism) is possible. This facility is not yet available for Argot2, therefore th current workflow has been designed as follows:

  1. The first step requires to upload the input files; since (S)FTP is the most efficient protocol for transferring files. To minimize possible security problems when dealing with files, a sort of “black hole” has been devised; ZIP files can be uploaded but they cannot be read back, overwritten, renamed nor deleted (that is a write-only ZIP files repository without overwriting permissions).
  2. Once successfully uploaded, a SOAP request envelope to the “RunArgot2” action can be sent. In the “out_blast_tab” and “out_hmm_tab” you can just put the names of the uploaded ZIP files, while in the “example” part specify “False”; the other parts can be left at 0.0 . The response envelope is a “ResultsInfo” complex structure that contains the ID of the job and a possible error message.
  3. The status of the job can be queried by sending a SOAP envelope to the “GetResults” action with the previous ID. The reply will be a “JobInfo” complex structure containing the URL of the zipped results, their size in MB, and the URL of possible warnings. In the case the results are not ready, the size will be zero and the warnings set to “Not yet ready…”. If there will have been an error the file size will be -1 and an explanation message will be returned in the last field.
  4. Results can finally be downloaded at the returned URL(s).

Protocol


Request envelopes

RunArgot2 envelope

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arg="http://www.medcomp.medicina.unipd.it/Argot2">
   <soapenv:Header/>
   <soapenv:Body>
      <arg:RunArgot2 soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <out_blast_tab xsi:type="xsd:string">out_blast_tab_val</out_blast_tab>
         <out_hmm_tab xsi:type="xsd:string">out_hmm_tab_val</out_hmm_tab>
         <inf_content xsi:type="xsd:float">inf_content_val</inf_content>
         <int_confidence xsi:type="xsd:float">int_confidence_val</int_confidence>
         <totalScore xsi:type="xsd:float">totalScore_val</totalScore>
         <example xsi:type="xsd:Bool">False</example>
      </arg:RunArgot2>
   </soapenv:Body>
</soapenv:Envelope>

GetResults envelope

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arg="http://www.medcomp.medicina.unipd.it/Argot2">
   <soapenv:Header/>
   <soapenv:Body>
      <arg:GetResults soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <job_id xsi:type="xsd:int">job_id_val</job_id>
      </arg:GetResults>
   </soapenv:Body>
</soapenv:Envelope>

Response envelopes

RunArgot2 envelope

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <RunArgot2ResponseType>
            <return>
                <job_id>job_id_val</job_id>
                <error>error_val</error>
            </return>
        </RunArgot2ResponseType>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

GetResults envelope

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <GetResultsResponseType>
            <return>
                <results_url>argot2_results_zip_val</results_url>
                <size>size_val</size>
               <warnings>warn_user_log_val</warnings>
            </return>
        </GetResultsResponseType>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Examples


Uploading the Blast and HMMer ZIP files

#!/usr/bin/env python

from fabric.api import *
from fabric.operations import put
#import progressbar, os

#pbar = progressbar.ProgressBar(maxval=os.path.getsize(fname))

env.host_string = '147.162.241.42'
env.user = <username>
env.password = <password>


def progress_cb(name, done, total):

    if pbar.start_time is None:
        pbar.start()
    # end if
    pbar.update(done)

# end def progress_cb

put("./out_hmm_tab.zip", '/out_hmm_tab.zip')#, callback=progress_cb)
print "Uploaded HMMer file successfully!"
put("./out_blast_tab.zip", '/out_blast_tab.zip')
print "All done!"

#pbar.finish()

Running Argot2

import requests
import xml.etree.ElementTree as ET


envelope = """
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arg="http://www.medcomp.medicina.unipd.it/Argot2">
   <soapenv:Header/>
   <soapenv:Body>
      <arg:RunArgot2 soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <out_blast_tab xsi:type="xsd:string">out_blast_tab_val</out_blast_tab>
         <out_hmm_tab xsi:type="xsd:string">out_hmm_tab_val</out_hmm_tab>
         <inf_content xsi:type="xsd:float">inf_content_val</inf_content>
         <int_confidence xsi:type="xsd:float">int_confidence_val</int_confidence>
         <totalScore xsi:type="xsd:float">totalScore_val</totalScore>
         <example xsi:type="xsd:Bool">False</example>
      </arg:RunArgot2>
   </soapenv:Body>
</soapenv:Envelope>
"""

envelope = envelope.replace("out_blast_tab_val", "out_blast_tab.zip")
envelope = envelope.replace("out_hmm_tab_val", "out_hmm_tab.zip")
envelope = envelope.replace("inf_content_val", "0.0")
envelope = envelope.replace("int_confidence_val", "0.0")
envelope = envelope.replace("totalScore_val", "0.0")
envelope = envelope.replace("example", "True")

headers = {'content-type': 'text/xml;charset=UTF-8', 'SOAPAction': 'http://www.medcomp.medicina.unipd.it/Argot2#RunArgot2'}
r = requests.post("http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php", data=envelope, headers=headers)
print(r.status_code, r.reason)

doc = ET.fromstring(r.text)

print doc.find('.//job_id').text
print doc.find('.//error').text

Getting the status of the job

import requests
import xml.etree.ElementTree as ET


envelope = """
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arg="http://www.medcomp.medicina.unipd.it/Argot2">
   <soapenv:Header/>
   <soapenv:Body>
      <arg:GetResults soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <job_id xsi:type="xsd:int">job_id_val</job_id>
      </arg:GetResults>
   </soapenv:Body>
</soapenv:Envelope>
"""

envelope = envelope.replace("job_id_val", "1480")
headers = {'content-type': 'text/xml;charset=UTF-8', 'SOAPAction': 'http://www.medcomp.medicina.unipd.it/Argot2#GetResults'}
r = requests.post("http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php", data=envelope, headers=headers)
print(r.status_code, r.reason)
#~ print(r.text[:3000] + '...')

doc = ET.fromstring(r.text)

print doc.find('.//results_url').text
print doc.find('.//size').text
print doc.find('.//warnings').text

Downloading the results

#!/usr/bin/env python

import requests
import  sys
#~ import progressbar


ISO = "http://www.medcomp.medicina.unipd.it/Argot2_res/jobs_dell2/batch_0000004020/argot2_results.zip"
CHUNK_SIZE = 1024 * 1024 # 1MB

r = requests.get(ISO)
total_size = int(r.headers['content-length'])
print("Size = %d\n" % total_size)
#~ pbar = progressbar.ProgressBar(maxval=total_size).start()

file_len = 0
with open("argot2_results.zip", 'wb') as fd:
    for chunk in r.iter_content(chunk_size=CHUNK_SIZE):
        fd.write(chunk)
        file_len += 1
        #~ pbar.update(file_len)
        sys.stderr.flush()
    # end for
# end with

#~ pbar.finish()

A complete client

The previous steps sketched in Python have been integrated in a complete client written in F#. The code below is annotated with type signatures: Try to move the mouse over it! (credits).

  1: open System.Net
  2: open System
  3: open System.IO
  4: open System.Text
  5: open Renci.SshNet
  6: open System.Xml
  7: 
  8: 
  9: let getRes_request = "<soapenv:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:arg='http://www.medcomp.medicina.unipd.it/Argot2'>" +
 10:                      "  <soapenv:Header/>" +
 11:                      "   <soapenv:Body>" +
 12:                      "      <arg:GetResults soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>" +
 13:                      "         <job_id xsi:type='xsd:int'>job_id_val</job_id>" +
 14:                      "      </arg:GetResults>" +
 15:                      "   </soapenv:Body>" +
 16:                      "</soapenv:Envelope>"
 17: 
 18: let runArgot2_request = "<soapenv:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:arg='http://www.medcomp.medicina.unipd.it/Argot2'>" +
 19:                         "   <soapenv:Header/>" +
 20:                         "   <soapenv:Body>" +
 21:                         "      <arg:RunArgot2 soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>" +
 22:                         "         <out_blast_tab xsi:type='xsd:string'>out_blast_tab_val</out_blast_tab>" +
 23:                         "         <out_hmm_tab xsi:type='xsd:string'>out_hmm_tab_val</out_hmm_tab>" +
 24:                         "         <inf_content xsi:type='xsd:float'>inf_content_val</inf_content>" +
 25:                         "         <int_confidence xsi:type='xsd:float'>int_confidence_val</int_confidence>" +
 26:                         "         <totalScore xsi:type='xsd:float'>totalScore_val</totalScore>" +
 27:                         "         <example xsi:type='xsd:Bool'>True</example>" +
 28:                         "      </arg:RunArgot2>" +
 29:                         "   </soapenv:Body>" +
 30:                         "</soapenv:Envelope>"
 31: 
 32: type MaybeBuilder() =
 33:     member this.Bind(p, rest) = match p with
 34:                                 | None -> None
 35:                                 | Some a -> rest a
 36:     member this.Return(x) = Some x
 37:     member this.Zero(x) = Some x
 38: // end type MaybeBuilder
 39: 
 40: let maybe = new MaybeBuilder()
 41: 
 42: 
 43: let fetchUrl (url: Uri) (name: String) : Async<unit> =
 44:     async {
 45:         let webClient = new WebClient()
 46:         webClient.DownloadFile (url, name)
 47:     }
 48: // end fetchUrl
 49: 
 50: let uploadZIP (name: string) (where: string) : Async<unit> =
 51:     async {
 52:         use sftp = new SftpClient("147.162.241.42", <username>, <password>)
 53:         sftp.Connect()
 54:         let fileStream = File.OpenRead name
 55:         printf "Uploading %s to %s ... " name where
 56:         sftp.UploadFile (fileStream, where)
 57:         printfn "OK"
 58:     }
 59: // end uploadZIP
 60: 
 61: type Either<'a,'b> = Choice<'b,'a>
 62: 
 63: let Right x: Either<'a,'b> = Choice1Of2 x
 64: 
 65: let Left  x: Either<'a,'b> = Choice2Of2 x
 66: 
 67: let (|Right|Left|) = function
 68:                      | Choice1Of2 x -> Right x
 69:                      | Choice2Of2 x -> Left x
 70: 
 71: 
 72: let sendReq (url: string) (files: (string * string) list) (action: string) (xml: string) : Either<string, XmlNodeList> =
 73:     // Create & configure HTTP web request
 74:     let req = HttpWebRequest.Create(url) :?> HttpWebRequest
 75:     req.ProtocolVersion <- HttpVersion.Version10
 76:     req.Method <- "POST"
 77:     req.KeepAlive <- false
 78:     req.Timeout <- 18000
 79:     req.ReadWriteTimeout <- 18000
 80:     req.Headers.Add ("SOAPAction: " + action)
 81: 
 82:     // Encode body with POST data as array of bytes
 83:     let xmlBytes = Encoding.ASCII.GetBytes xml
 84:     req.ContentType <- "text/xml;charset=UTF-8"
 85:     req.ContentLength <- int64 xmlBytes.Length
 86:     let reqStream = req.GetRequestStream()
 87:     reqStream.Write(xmlBytes, 0, xmlBytes.Length)
 88:     reqStream.Close()
 89: 
 90:     // Obtain response and download the resulting page
 91:     try
 92:         let resp = req.GetResponse()
 93:         let stream = resp.GetResponseStream()
 94:         let reader = new StreamReader(stream)
 95: 
 96:         let xdoc = new XmlDocument()
 97:         xdoc.LoadXml(reader.ReadToEnd())
 98:         Right (xdoc.SelectNodes("//return").Item(0).ChildNodes)
 99:     with
100:         | :? System.Net.WebException as exn ->
101:             Left ("An exception occurred: " + exn.Message)
102: // end sendReq
103: 
104: type ResultsInfo = {
105:     file_url: string;
106:     file_size: float;
107:     warning: string option
108: }
109: 
110: exception Argot2Error of string
111: 
112: let correct (txt: string): (string option) =
113:     if txt.Equals("") then
114:         None
115:     else
116:         Some txt
117: // end correct
118: 
119: let getResults' (job_id: int) : ResultsInfo =
120:     let xml = getRes_request
121:     let xml1 = xml.Replace("job_id_val", job_id.ToString())
122:     let url = "http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php"
123: 
124:     let nodes_opt = sendReq url [] "http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php#GetResults" xml1
125: 
126:     match nodes_opt with
127:     | Left err ->
128:         raise(Argot2Error err)
129:     | Right nodes ->
130:         { file_url=nodes.Item(0).InnerText; file_size=float(nodes.Item(1).InnerText); warning=correct (nodes.Item(2).InnerText) }
131: // end getResults
132: 
133: let rec getResults (n: int) (max_retries: int) (job_id: int) : Async<ResultsInfo option> =
134:     async {
135:         let res = getResults' job_id
136: 
137:         if res.file_size > 0.0 then
138:             return (Some (res: ResultsInfo))
139:         else if res.file_size < 0.0 then
140:             return (None: ResultsInfo option)
141:         else
142:             printfn "%d. %s (%3.3fMB)" n res.file_url res.file_size
143:             match res.warning with
144:             | Some warn ->
145:                 printfn "%s\n" warn
146:             | None ->
147:                 ()
148:             do! Async.Sleep 5000
149:             return! getResults (n + 1) max_retries job_id
150:     }
151: // end getResults
152: 
153: type JobsInfo = {
154:     job_id: int;
155:     error: string option
156: }
157: 
158: type Microsoft.FSharp.Control.Async with
159:     static member Raise (e : #exn) =
160:         Async.FromContinuations(fun (_, econt, _) -> econt e)
161: 
162: let runArgot2 (out_blast_tab: string) (out_hmm_tab: string) (inf_content: float) (int_confidence: float) (totalScore: float) : Async<JobsInfo> =
163:     async {
164:         let xml = runArgot2_request
165:         let xml1 = xml.Replace("out_blast_tab_val", out_blast_tab)
166:                       .Replace("out_hmm_tab_val", out_hmm_tab)
167:                       .Replace("inf_content_val", inf_content.ToString())
168:                       .Replace("int_confidence_val", int_confidence.ToString())
169:                       .Replace("totalScore_val", totalScore.ToString())
170:         let url = "http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php"
171: 
172:         let nodes_opt = sendReq url [] "http://www.medcomp.medicina.unipd.it/Argot2/soap_api.php#RunArgot2" xml1
173: 
174:         match nodes_opt with
175:         | Left err ->
176:             return! Async.Raise <| (Argot2Error err)
177:         | Right nodes ->
178:             if nodes.Item(1).InnerText.Equals("") then
179:                 return { job_id=int(nodes.Item(0).InnerText); error=correct (nodes.Item(1).InnerText) }
180:             else
181:                return! Async.Raise <| (Argot2Error (nodes.Item(1).InnerText))
182:     }
183: // end runArgot2
184: 
185: [<EntryPoint>]
186: let main args =
187:     try
188:         // side effects => exception 
189:         Async.RunSynchronously (uploadZIP @"../../out_blast_tab_small.zip" "out_blast_tab_small.zip")
190:         // side effects => exception (whenever run in parallel gives a "closed channel" exception!)
191:         Async.RunSynchronously (uploadZIP @"../../out_hmm_tab_small.zip" "out_hmm_tab_small.zip")
192: 
193:         // side effects => exception
194:         let job_id = Async.RunSynchronously (runArgot2 "out_blast_tab_small.zip" "out_hmm_tab_small.zip" 0.0 0.0 0.0)
195: 
196:         // no side effects => maybe monad (plus Async exceptions)
197:         let res = maybe {
198:             let! res = Async.RunSynchronously (getResults 0 3 job_id.job_id)
199: 
200:             let urls = [ (fetchUrl (Uri res.file_url) "argot2_results.zip") ]
201:             let urls = match res.warning with
202:                        | Some warn ->
203:                            (fetchUrl (Uri warn) "argot2_warnings.log") :: urls
204:                        | None ->
205:                             urls
206: 
207:             urls |> Async.Parallel |> Async.RunSynchronously |> ignore
208:         }
209: 
210:         printfn "Done!"
211:         0
212:     with
213:     | exn ->
214:         printfn "An exception occurred: %s" exn.Message
215:         1
216: // end main
namespace System
namespace System.Net
namespace System.IO
namespace System.Text
namespace Renci
namespace Renci.SshNet
namespace System.Xml
val getRes_request : string

Full name: Snippet.getRes_request

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val runArgot2_request : string

Full name: Snippet.runArgot2_request

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
type MaybeBuilder =
  class
    new : unit -> MaybeBuilder
    member Bind : p:'c option * rest:('c -> 'd option) -> 'd option
    member Return : x:'b -> 'b option
    member Zero : x:'a -> 'a option
  end

Full name: Snippet.MaybeBuilder
val this : MaybeBuilder
member MaybeBuilder.Bind : p:'c option * rest:('c -> 'd option) -> 'd option

Full name: Snippet.MaybeBuilder.Bind
val p : 'c option

  type: 'c option
  implements: Collections.IStructuralEquatable
  implements: IComparable<Option<'c>>
  implements: IComparable
  implements: Collections.IStructuralComparable
val rest : ('c -> 'd option)
union case Option.None: Option<'T>
union case Option.Some: 'T -> Option<'T>
val a : 'c
member MaybeBuilder.Return : x:'b -> 'b option

Full name: Snippet.MaybeBuilder.Return
val x : 'b
member MaybeBuilder.Zero : x:'a -> 'a option

Full name: Snippet.MaybeBuilder.Zero
val x : 'a
val maybe : MaybeBuilder

Full name: Snippet.maybe
val fetchUrl : Uri -> String -> Async<unit>

Full name: Snippet.fetchUrl
val url : Uri

  type: Uri
  implements: Runtime.Serialization.ISerializable
type Uri =
  class
    new : string -> System.Uri
    new : string * bool -> System.Uri
    new : System.Uri * string * bool -> System.Uri
    new : string * System.UriKind -> System.Uri
    new : System.Uri * string -> System.Uri
    new : System.Uri * System.Uri -> System.Uri
    member AbsolutePath : string
    member AbsoluteUri : string
    member Authority : string
    member DnsSafeHost : string
    member Equals : obj -> bool
    member Fragment : string
    member GetComponents : System.UriComponents * System.UriFormat -> string
    member GetHashCode : unit -> int
    member GetLeftPart : System.UriPartial -> string
    member Host : string
    member HostNameType : System.UriHostNameType
    member IsAbsoluteUri : bool
    member IsBaseOf : System.Uri -> bool
    member IsDefaultPort : bool
    member IsFile : bool
    member IsLoopback : bool
    member IsUnc : bool
    member IsWellFormedOriginalString : unit -> bool
    member LocalPath : string
    member MakeRelative : System.Uri -> string
    member MakeRelativeUri : System.Uri -> System.Uri
    member OriginalString : string
    member PathAndQuery : string
    member Port : int
    member Query : string
    member Scheme : string
    member Segments : string []
    member ToString : unit -> string
    member UserEscaped : bool
    member UserInfo : string
    static val UriSchemeFile : string
    static val UriSchemeFtp : string
    static val UriSchemeGopher : string
    static val UriSchemeHttp : string
    static val UriSchemeHttps : string
    static val UriSchemeMailto : string
    static val UriSchemeNews : string
    static val UriSchemeNntp : string
    static val UriSchemeNetTcp : string
    static val UriSchemeNetPipe : string
    static val SchemeDelimiter : string
    static member CheckHostName : string -> System.UriHostNameType
    static member CheckSchemeName : string -> bool
    static member Compare : System.Uri * System.Uri * System.UriComponents * System.UriFormat * System.StringComparison -> int
    static member EscapeDataString : string -> string
    static member EscapeUriString : string -> string
    static member FromHex : char -> int
    static member HexEscape : char -> string
    static member HexUnescape : string * int -> char
    static member IsHexDigit : char -> bool
    static member IsHexEncoding : string * int -> bool
    static member IsWellFormedUriString : string * System.UriKind -> bool
    static member TryCreate : string * System.UriKind * System.Uri -> bool
    static member TryCreate : System.Uri * string * System.Uri -> bool
    static member TryCreate : System.Uri * System.Uri * System.Uri -> bool
    static member UnescapeDataString : string -> string
  end

Full name: System.Uri

  type: Uri
  implements: Runtime.Serialization.ISerializable
val name : String

  type: String
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
type String =
  class
    new : char -> string
    new : char * int * int -> string
    new : System.SByte -> string
    new : System.SByte * int * int -> string
    new : System.SByte * int * int * System.Text.Encoding -> string
    new : char [] * int * int -> string
    new : char [] -> string
    new : char * int -> string
    member Chars : int -> char
    member Clone : unit -> obj
    member CompareTo : obj -> int
    member CompareTo : string -> int
    member Contains : string -> bool
    member CopyTo : int * char [] * int * int -> unit
    member EndsWith : string -> bool
    member EndsWith : string * System.StringComparison -> bool
    member EndsWith : string * bool * System.Globalization.CultureInfo -> bool
    member Equals : obj -> bool
    member Equals : string -> bool
    member Equals : string * System.StringComparison -> bool
    member GetEnumerator : unit -> System.CharEnumerator
    member GetHashCode : unit -> int
    member GetTypeCode : unit -> System.TypeCode
    member IndexOf : char -> int
    member IndexOf : string -> int
    member IndexOf : char * int -> int
    member IndexOf : string * int -> int
    member IndexOf : string * System.StringComparison -> int
    member IndexOf : char * int * int -> int
    member IndexOf : string * int * int -> int
    member IndexOf : string * int * System.StringComparison -> int
    member IndexOf : string * int * int * System.StringComparison -> int
    member IndexOfAny : char [] -> int
    member IndexOfAny : char [] * int -> int
    member IndexOfAny : char [] * int * int -> int
    member Insert : int * string -> string
    member IsNormalized : unit -> bool
    member IsNormalized : System.Text.NormalizationForm -> bool
    member LastIndexOf : char -> int
    member LastIndexOf : string -> int
    member LastIndexOf : char * int -> int
    member LastIndexOf : string * int -> int
    member LastIndexOf : string * System.StringComparison -> int
    member LastIndexOf : char * int * int -> int
    member LastIndexOf : string * int * int -> int
    member LastIndexOf : string * int * System.StringComparison -> int
    member LastIndexOf : string * int * int * System.StringComparison -> int
    member LastIndexOfAny : char [] -> int
    member LastIndexOfAny : char [] * int -> int
    member LastIndexOfAny : char [] * int * int -> int
    member Length : int
    member Normalize : unit -> string
    member Normalize : System.Text.NormalizationForm -> string
    member PadLeft : int -> string
    member PadLeft : int * char -> string
    member PadRight : int -> string
    member PadRight : int * char -> string
    member Remove : int -> string
    member Remove : int * int -> string
    member Replace : char * char -> string
    member Replace : string * string -> string
    member Split : char [] -> string []
    member Split : char [] * int -> string []
    member Split : char [] * System.StringSplitOptions -> string []
    member Split : string [] * System.StringSplitOptions -> string []
    member Split : char [] * int * System.StringSplitOptions -> string []
    member Split : string [] * int * System.StringSplitOptions -> string []
    member StartsWith : string -> bool
    member StartsWith : string * System.StringComparison -> bool
    member StartsWith : string * bool * System.Globalization.CultureInfo -> bool
    member Substring : int -> string
    member Substring : int * int -> string
    member ToCharArray : unit -> char []
    member ToCharArray : int * int -> char []
    member ToLower : unit -> string
    member ToLower : System.Globalization.CultureInfo -> string
    member ToLowerInvariant : unit -> string
    member ToString : unit -> string
    member ToString : System.IFormatProvider -> string
    member ToUpper : unit -> string
    member ToUpper : System.Globalization.CultureInfo -> string
    member ToUpperInvariant : unit -> string
    member Trim : unit -> string
    member Trim : char [] -> string
    member TrimEnd : char [] -> string
    member TrimStart : char [] -> string
    static val Empty : string
    static member Compare : string * string -> int
    static member Compare : string * string * bool -> int
    static member Compare : string * string * System.StringComparison -> int
    static member Compare : string * string * System.Globalization.CultureInfo * System.Globalization.CompareOptions -> int
    static member Compare : string * string * bool * System.Globalization.CultureInfo -> int
    static member Compare : string * int * string * int * int -> int
    static member Compare : string * int * string * int * int * bool -> int
    static member Compare : string * int * string * int * int * System.StringComparison -> int
    static member Compare : string * int * string * int * int * bool * System.Globalization.CultureInfo -> int
    static member Compare : string * int * string * int * int * System.Globalization.CultureInfo * System.Globalization.CompareOptions -> int
    static member CompareOrdinal : string * string -> int
    static member CompareOrdinal : string * int * string * int * int -> int
    static member Concat : obj -> string
    static member Concat : obj [] -> string
    static member Concat<'T> : System.Collections.Generic.IEnumerable<'T> -> string
    static member Concat : System.Collections.Generic.IEnumerable<string> -> string
    static member Concat : string [] -> string
    static member Concat : obj * obj -> string
    static member Concat : string * string -> string
    static member Concat : obj * obj * obj -> string
    static member Concat : string * string * string -> string
    static member Concat : obj * obj * obj * obj -> string
    static member Concat : string * string * string * string -> string
    static member Copy : string -> string
    static member Equals : string * string -> bool
    static member Equals : string * string * System.StringComparison -> bool
    static member Format : string * obj -> string
    static member Format : string * obj [] -> string
    static member Format : string * obj * obj -> string
    static member Format : System.IFormatProvider * string * obj [] -> string
    static member Format : string * obj * obj * obj -> string
    static member Intern : string -> string
    static member IsInterned : string -> string
    static member IsNullOrEmpty : string -> bool
    static member IsNullOrWhiteSpace : string -> bool
    static member Join : string * string [] -> string
    static member Join : string * obj [] -> string
    static member Join<'T> : string * System.Collections.Generic.IEnumerable<'T> -> string
    static member Join : string * System.Collections.Generic.IEnumerable<string> -> string
    static member Join : string * string [] * int * int -> string
  end

Full name: System.String

  type: String
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
Multiple items
type Async<'T>

Full name: Microsoft.FSharp.Control.Async<_>

--------------------
type Async
with
  static member AsBeginEnd : computation:('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit)
  static member AwaitEvent : event:IEvent<'Del,'T> * ?cancelAction:(unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate)
  static member AwaitIAsyncResult : iar:IAsyncResult * ?millisecondsTimeout:int -> Async<bool>
  static member AwaitTask : task:Threading.Tasks.Task<'T> -> Async<'T>
  static member AwaitWaitHandle : waitHandle:Threading.WaitHandle * ?millisecondsTimeout:int -> Async<bool>
  static member CancelDefaultToken : unit -> unit
  static member Catch : computation:Async<'T> -> Async<Choice<'T,exn>>
  static member FromBeginEnd : beginAction:(AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T>
  static member FromBeginEnd : arg:'Arg1 * beginAction:('Arg1 * AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T>
  static member FromBeginEnd : arg1:'Arg1 * arg2:'Arg2 * beginAction:('Arg1 * 'Arg2 * AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T>
  static member FromBeginEnd : arg1:'Arg1 * arg2:'Arg2 * arg3:'Arg3 * beginAction:('Arg1 * 'Arg2 * 'Arg3 * AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T>
  static member FromContinuations : callback:(('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T>
  static member Ignore : computation:Async<'T> -> Async<unit>
  static member OnCancel : interruption:(unit -> unit) -> Async<IDisposable>
  static member Parallel : computations:seq<Async<'T>> -> Async<'T []>
  static member RunSynchronously : computation:Async<'T> * ?timeout:int * ?cancellationToken:Threading.CancellationToken -> 'T
  static member Sleep : millisecondsDueTime:int -> Async<unit>
  static member Start : computation:Async<unit> * ?cancellationToken:Threading.CancellationToken -> unit
  static member StartAsTask : computation:Async<'T> * ?taskCreationOptions:Threading.Tasks.TaskCreationOptions * ?cancellationToken:Threading.CancellationToken -> Threading.Tasks.Task<'T>
  static member StartChild : computation:Async<'T> * ?millisecondsTimeout:int -> Async<Async<'T>>
  static member StartChildAsTask : computation:Async<'T> * ?taskCreationOptions:Threading.Tasks.TaskCreationOptions -> Async<Threading.Tasks.Task<'T>>
  static member StartImmediate : computation:Async<unit> * ?cancellationToken:Threading.CancellationToken -> unit
  static member StartWithContinuations : computation:Async<'T> * continuation:('T -> unit) * exceptionContinuation:(exn -> unit) * cancellationContinuation:(OperationCanceledException -> unit) * ?cancellationToken:Threading.CancellationToken -> unit
  static member SwitchToContext : syncContext:Threading.SynchronizationContext -> Async<unit>
  static member SwitchToNewThread : unit -> Async<unit>
  static member SwitchToThreadPool : unit -> Async<unit>
  static member TryCancelled : computation:Async<'T> * compensation:(OperationCanceledException -> unit) -> Async<'T>
  static member CancellationToken : Async<Threading.CancellationToken>
  static member DefaultCancellationToken : Threading.CancellationToken
end

Full name: Microsoft.FSharp.Control.Async
type unit = Unit

Full name: Microsoft.FSharp.Core.unit

  type: unit
  implements: IComparable
val async : AsyncBuilder

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.async
val webClient : WebClient

  type: WebClient
  implements: ComponentModel.IComponent
  implements: IDisposable
  inherits: ComponentModel.Component
  inherits: MarshalByRefObject
type WebClient =
  class
    inherit System.ComponentModel.Component
    new : unit -> System.Net.WebClient
    member AllowReadStreamBuffering : bool with get, set
    member AllowWriteStreamBuffering : bool with get, set
    member BaseAddress : string with get, set
    member CachePolicy : System.Net.Cache.RequestCachePolicy with get, set
    member CancelAsync : unit -> unit
    member Credentials : System.Net.ICredentials with get, set
    member DownloadData : string -> System.Byte []
    member DownloadData : System.Uri -> System.Byte []
    member DownloadDataAsync : System.Uri -> unit
    member DownloadDataAsync : System.Uri * obj -> unit
    member DownloadDataTaskAsync : string -> System.Threading.Tasks.Task<System.Byte []>
    member DownloadDataTaskAsync : System.Uri -> System.Threading.Tasks.Task<System.Byte []>
    member DownloadFile : string * string -> unit
    member DownloadFile : System.Uri * string -> unit
    member DownloadFileAsync : System.Uri * string -> unit
    member DownloadFileAsync : System.Uri * string * obj -> unit
    member DownloadFileTaskAsync : string * string -> System.Threading.Tasks.Task
    member DownloadFileTaskAsync : System.Uri * string -> System.Threading.Tasks.Task
    member DownloadString : string -> string
    member DownloadString : System.Uri -> string
    member DownloadStringAsync : System.Uri -> unit
    member DownloadStringAsync : System.Uri * obj -> unit
    member DownloadStringTaskAsync : string -> System.Threading.Tasks.Task<string>
    member DownloadStringTaskAsync : System.Uri -> System.Threading.Tasks.Task<string>
    member Encoding : System.Text.Encoding with get, set
    member Headers : System.Net.WebHeaderCollection with get, set
    member IsBusy : bool
    member OpenRead : string -> System.IO.Stream
    member OpenRead : System.Uri -> System.IO.Stream
    member OpenReadAsync : System.Uri -> unit
    member OpenReadAsync : System.Uri * obj -> unit
    member OpenReadTaskAsync : string -> System.Threading.Tasks.Task<System.IO.Stream>
    member OpenReadTaskAsync : System.Uri -> System.Threading.Tasks.Task<System.IO.Stream>
    member OpenWrite : string -> System.IO.Stream
    member OpenWrite : System.Uri -> System.IO.Stream
    member OpenWrite : string * string -> System.IO.Stream
    member OpenWrite : System.Uri * string -> System.IO.Stream
    member OpenWriteAsync : System.Uri -> unit
    member OpenWriteAsync : System.Uri * string -> unit
    member OpenWriteAsync : System.Uri * string * obj -> unit
    member OpenWriteTaskAsync : string -> System.Threading.Tasks.Task<System.IO.Stream>
    member OpenWriteTaskAsync : System.Uri -> System.Threading.Tasks.Task<System.IO.Stream>
    member OpenWriteTaskAsync : string * string -> System.Threading.Tasks.Task<System.IO.Stream>
    member OpenWriteTaskAsync : System.Uri * string -> System.Threading.Tasks.Task<System.IO.Stream>
    member Proxy : System.Net.IWebProxy with get, set
    member QueryString : System.Collections.Specialized.NameValueCollection with get, set
    member ResponseHeaders : System.Net.WebHeaderCollection
    member UploadData : string * System.Byte [] -> System.Byte []
    member UploadData : System.Uri * System.Byte [] -> System.Byte []
    member UploadData : string * string * System.Byte [] -> System.Byte []
    member UploadData : System.Uri * string * System.Byte [] -> System.Byte []
    member UploadDataAsync : System.Uri * System.Byte [] -> unit
    member UploadDataAsync : System.Uri * string * System.Byte [] -> unit
    member UploadDataAsync : System.Uri * string * System.Byte [] * obj -> unit
    member UploadDataTaskAsync : string * System.Byte [] -> System.Threading.Tasks.Task<System.Byte []>
    member UploadDataTaskAsync : System.Uri * System.Byte [] -> System.Threading.Tasks.Task<System.Byte []>
    member UploadDataTaskAsync : string * string * System.Byte [] -> System.Threading.Tasks.Task<System.Byte []>
    member UploadDataTaskAsync : System.Uri * string * System.Byte [] -> System.Threading.Tasks.Task<System.Byte []>
    member UploadFile : string * string -> System.Byte []
    member UploadFile : System.Uri * string -> System.Byte []
    member UploadFile : string * string * string -> System.Byte []
    member UploadFile : System.Uri * string * string -> System.Byte []
    member UploadFileAsync : System.Uri * string -> unit
    member UploadFileAsync : System.Uri * string * string -> unit
    member UploadFileAsync : System.Uri * string * string * obj -> unit
    member UploadFileTaskAsync : string * string -> System.Threading.Tasks.Task<System.Byte []>
    member UploadFileTaskAsync : System.Uri * string -> System.Threading.Tasks.Task<System.Byte []>
    member UploadFileTaskAsync : string * string * string -> System.Threading.Tasks.Task<System.Byte []>
    member UploadFileTaskAsync : System.Uri * string * string -> System.Threading.Tasks.Task<System.Byte []>
    member UploadString : string * string -> string
    member UploadString : System.Uri * string -> string
    member UploadString : string * string * string -> string
    member UploadString : System.Uri * string * string -> string
    member UploadStringAsync : System.Uri * string -> unit
    member UploadStringAsync : System.Uri * string * string -> unit
    member UploadStringAsync : System.Uri * string * string * obj -> unit
    member UploadStringTaskAsync : string * string -> System.Threading.Tasks.Task<string>
    member UploadStringTaskAsync : System.Uri * string -> System.Threading.Tasks.Task<string>
    member UploadStringTaskAsync : string * string * string -> System.Threading.Tasks.Task<string>
    member UploadStringTaskAsync : System.Uri * string * string -> System.Threading.Tasks.Task<string>
    member UploadValues : string * System.Collections.Specialized.NameValueCollection -> System.Byte []
    member UploadValues : System.Uri * System.Collections.Specialized.NameValueCollection -> System.Byte []
    member UploadValues : string * string * System.Collections.Specialized.NameValueCollection -> System.Byte []
    member UploadValues : System.Uri * string * System.Collections.Specialized.NameValueCollection -> System.Byte []
    member UploadValuesAsync : System.Uri * System.Collections.Specialized.NameValueCollection -> unit
    member UploadValuesAsync : System.Uri * string * System.Collections.Specialized.NameValueCollection -> unit
    member UploadValuesAsync : System.Uri * string * System.Collections.Specialized.NameValueCollection * obj -> unit
    member UploadValuesTaskAsync : string * System.Collections.Specialized.NameValueCollection -> System.Threading.Tasks.Task<System.Byte []>
    member UploadValuesTaskAsync : System.Uri * System.Collections.Specialized.NameValueCollection -> System.Threading.Tasks.Task<System.Byte []>
    member UploadValuesTaskAsync : string * string * System.Collections.Specialized.NameValueCollection -> System.Threading.Tasks.Task<System.Byte []>
    member UploadValuesTaskAsync : System.Uri * string * System.Collections.Specialized.NameValueCollection -> System.Threading.Tasks.Task<System.Byte []>
    member UseDefaultCredentials : bool with get, set
  end

Full name: System.Net.WebClient

  type: WebClient
  implements: ComponentModel.IComponent
  implements: IDisposable
  inherits: ComponentModel.Component
  inherits: MarshalByRefObject
WebClient.DownloadFile(address: Uri, fileName: string) : unit
WebClient.DownloadFile(address: string, fileName: string) : unit
val uploadZIP : string -> string -> Async<unit>

Full name: Snippet.uploadZIP
val name : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
Multiple items
val string : 'T -> string

Full name: Microsoft.FSharp.Core.Operators.string

--------------------
type string = String

Full name: Microsoft.FSharp.Core.string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val where : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val sftp : SftpClient

  type: SftpClient
  implements: IDisposable
  inherits: BaseClient
type SftpClient =
  class
    inherit Renci.SshNet.BaseClient
    new : Renci.SshNet.ConnectionInfo -> Renci.SshNet.SftpClient
    new : string * int * string * string -> Renci.SshNet.SftpClient
    new : string * string * string -> Renci.SshNet.SftpClient
    new : string * int * string * Renci.SshNet.PrivateKeyFile [] -> Renci.SshNet.SftpClient
    new : string * string * Renci.SshNet.PrivateKeyFile [] -> Renci.SshNet.SftpClient
    member AppendAllLines : string * System.Collections.Generic.IEnumerable<string> -> unit
    member AppendAllLines : string * System.Collections.Generic.IEnumerable<string> * System.Text.Encoding -> unit
    member AppendAllText : string * string -> unit
    member AppendAllText : string * string * System.Text.Encoding -> unit
    member AppendText : string -> System.IO.StreamWriter
    member AppendText : string * System.Text.Encoding -> System.IO.StreamWriter
    member BeginDownloadFile : string * System.IO.Stream -> System.IAsyncResult
    member BeginDownloadFile : string * System.IO.Stream * System.AsyncCallback -> System.IAsyncResult
    member BeginDownloadFile : string * System.IO.Stream * System.AsyncCallback * obj * System.Action<uint64> -> System.IAsyncResult
    member BeginListDirectory : string * System.AsyncCallback * obj * System.Action<int> -> System.IAsyncResult
    member BeginSynchronizeDirectories : string * string * string * System.AsyncCallback * obj -> System.IAsyncResult
    member BeginUploadFile : System.IO.Stream * string -> System.IAsyncResult
    member BeginUploadFile : System.IO.Stream * string * System.AsyncCallback -> System.IAsyncResult
    member BeginUploadFile : System.IO.Stream * string * System.AsyncCallback * obj * System.Action<uint64> -> System.IAsyncResult
    member BeginUploadFile : System.IO.Stream * string * bool * System.AsyncCallback * obj * System.Action<uint64> -> System.IAsyncResult
    member BufferSize : uint32 with get, set
    member ChangeDirectory : string -> unit
    member ChangePermissions : string * int16 -> unit
    member Create : string -> Renci.SshNet.Sftp.SftpFileStream
    member Create : string * int -> Renci.SshNet.Sftp.SftpFileStream
    member CreateDirectory : string -> unit
    member CreateText : string -> System.IO.StreamWriter
    member CreateText : string * System.Text.Encoding -> System.IO.StreamWriter
    member Delete : string -> unit
    member DeleteDirectory : string -> unit
    member DeleteFile : string -> unit
    member DownloadFile : string * System.IO.Stream * System.Action<uint64> -> unit
    member EndDownloadFile : System.IAsyncResult -> unit
    member EndListDirectory : System.IAsyncResult -> System.Collections.Generic.IEnumerable<Renci.SshNet.Sftp.SftpFile>
    member EndSynchronizeDirectories : System.IAsyncResult -> System.Collections.Generic.IEnumerable<System.IO.FileInfo>
    member EndUploadFile : System.IAsyncResult -> unit
    member Exists : string -> bool
    member Get : string -> Renci.SshNet.Sftp.SftpFile
    member GetAttributes : string -> Renci.SshNet.Sftp.SftpFileAttributes
    member GetLastAccessTime : string -> System.DateTime
    member GetLastAccessTimeUtc : string -> System.DateTime
    member GetLastWriteTime : string -> System.DateTime
    member GetLastWriteTimeUtc : string -> System.DateTime
    member GetStatus : string -> Renci.SshNet.Sftp.SftpFileSytemInformation
    member ListDirectory : string * System.Action<int> -> System.Collections.Generic.IEnumerable<Renci.SshNet.Sftp.SftpFile>
    member Open : string * System.IO.FileMode -> Renci.SshNet.Sftp.SftpFileStream
    member Open : string * System.IO.FileMode * System.IO.FileAccess -> Renci.SshNet.Sftp.SftpFileStream
    member OpenRead : string -> Renci.SshNet.Sftp.SftpFileStream
    member OpenText : string -> System.IO.StreamReader
    member OpenWrite : string -> Renci.SshNet.Sftp.SftpFileStream
    member OperationTimeout : System.TimeSpan with get, set
    member ProtocolVersion : int with get, set
    member ReadAllBytes : string -> System.Byte []
    member ReadAllLines : string -> string []
    member ReadAllLines : string * System.Text.Encoding -> string []
    member ReadAllText : string -> string
    member ReadAllText : string * System.Text.Encoding -> string
    member ReadLines : string -> System.Collections.Generic.IEnumerable<string>
    member ReadLines : string * System.Text.Encoding -> System.Collections.Generic.IEnumerable<string>
    member RenameFile : string * string -> unit
    member RenameFile : string * string * bool -> unit
    member SetAttributes : string * Renci.SshNet.Sftp.SftpFileAttributes -> unit
    member SetLastAccessTime : string * System.DateTime -> unit
    member SetLastAccessTimeUtc : string * System.DateTime -> unit
    member SetLastWriteTime : string * System.DateTime -> unit
    member SetLastWriteTimeUtc : string * System.DateTime -> unit
    member SymbolicLink : string * string -> unit
    member SynchronizeDirectories : string * string * string -> System.Collections.Generic.IEnumerable<System.IO.FileInfo>
    member UploadFile : System.IO.Stream * string * System.Action<uint64> -> unit
    member UploadFile : System.IO.Stream * string * bool * System.Action<uint64> -> unit
    member WorkingDirectory : string
    member WriteAllBytes : string * System.Byte [] -> unit
    member WriteAllLines : string * System.Collections.Generic.IEnumerable<string> -> unit
    member WriteAllLines : string * string [] -> unit
    member WriteAllLines : string * System.Collections.Generic.IEnumerable<string> * System.Text.Encoding -> unit
    member WriteAllLines : string * string [] * System.Text.Encoding -> unit
    member WriteAllText : string * string -> unit
    member WriteAllText : string * string * System.Text.Encoding -> unit
  end

Full name: Renci.SshNet.SftpClient

  type: SftpClient
  implements: IDisposable
  inherits: BaseClient
val fileStream : FileStream

  type: FileStream
  implements: IDisposable
  inherits: Stream
  inherits: MarshalByRefObject
type File =
  class
    static member AppendAllLines : string * System.Collections.Generic.IEnumerable<string> -> unit
    static member AppendAllLines : string * System.Collections.Generic.IEnumerable<string> * System.Text.Encoding -> unit
    static member AppendAllText : string * string -> unit
    static member AppendAllText : string * string * System.Text.Encoding -> unit
    static member AppendText : string -> System.IO.StreamWriter
    static member Copy : string * string -> unit
    static member Copy : string * string * bool -> unit
    static member Create : string -> System.IO.FileStream
    static member Create : string * int -> System.IO.FileStream
    static member Create : string * int * System.IO.FileOptions -> System.IO.FileStream
    static member Create : string * int * System.IO.FileOptions * System.Security.AccessControl.FileSecurity -> System.IO.FileStream
    static member CreateText : string -> System.IO.StreamWriter
    static member Decrypt : string -> unit
    static member Delete : string -> unit
    static member Encrypt : string -> unit
    static member Exists : string -> bool
    static member GetAccessControl : string -> System.Security.AccessControl.FileSecurity
    static member GetAccessControl : string * System.Security.AccessControl.AccessControlSections -> System.Security.AccessControl.FileSecurity
    static member GetAttributes : string -> System.IO.FileAttributes
    static member GetCreationTime : string -> System.DateTime
    static member GetCreationTimeUtc : string -> System.DateTime
    static member GetLastAccessTime : string -> System.DateTime
    static member GetLastAccessTimeUtc : string -> System.DateTime
    static member GetLastWriteTime : string -> System.DateTime
    static member GetLastWriteTimeUtc : string -> System.DateTime
    static member Move : string * string -> unit
    static member Open : string * System.IO.FileMode -> System.IO.FileStream
    static member Open : string * System.IO.FileMode * System.IO.FileAccess -> System.IO.FileStream
    static member Open : string * System.IO.FileMode * System.IO.FileAccess * System.IO.FileShare -> System.IO.FileStream
    static member OpenRead : string -> System.IO.FileStream
    static member OpenText : string -> System.IO.StreamReader
    static member OpenWrite : string -> System.IO.FileStream
    static member ReadAllBytes : string -> System.Byte []
    static member ReadAllLines : string -> string []
    static member ReadAllLines : string * System.Text.Encoding -> string []
    static member ReadAllText : string -> string
    static member ReadAllText : string * System.Text.Encoding -> string
    static member ReadLines : string -> System.Collections.Generic.IEnumerable<string>
    static member ReadLines : string * System.Text.Encoding -> System.Collections.Generic.IEnumerable<string>
    static member Replace : string * string * string -> unit
    static member Replace : string * string * string * bool -> unit
    static member SetAccessControl : string * System.Security.AccessControl.FileSecurity -> unit
    static member SetAttributes : string * System.IO.FileAttributes -> unit
    static member SetCreationTime : string * System.DateTime -> unit
    static member SetCreationTimeUtc : string * System.DateTime -> unit
    static member SetLastAccessTime : string * System.DateTime -> unit
    static member SetLastAccessTimeUtc : string * System.DateTime -> unit
    static member SetLastWriteTime : string * System.DateTime -> unit
    static member SetLastWriteTimeUtc : string * System.DateTime -> unit
    static member WriteAllBytes : string * System.Byte [] -> unit
    static member WriteAllLines : string * string [] -> unit
    static member WriteAllLines : string * System.Collections.Generic.IEnumerable<string> -> unit
    static member WriteAllLines : string * string [] * System.Text.Encoding -> unit
    static member WriteAllLines : string * System.Collections.Generic.IEnumerable<string> * System.Text.Encoding -> unit
    static member WriteAllText : string * string -> unit
    static member WriteAllText : string * string * System.Text.Encoding -> unit
  end

Full name: System.IO.File
File.OpenRead(path: string) : FileStream
val printf : Printf.TextWriterFormat<'T> -> 'T

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printf
SftpClient.UploadFile(input: Stream, path: string, uploadCallback: Action<uint64>) : unit
SftpClient.UploadFile(input: Stream, path: string, canOverride: bool, uploadCallback: Action<uint64>) : unit
val printfn : Printf.TextWriterFormat<'T> -> 'T

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
type Either<'a,'b> = Choice<'b,'a>

Full name: Snippet.Either<_,_>

  type: Either<'a,'b>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'b,'a>>
  implements: IComparable
  implements: Collections.IStructuralComparable
Multiple items
type Choice<'T1,'T2,'T3,'T4,'T5,'T6,'T7> =
  | Choice1Of7 of 'T1
  | Choice2Of7 of 'T2
  | Choice3Of7 of 'T3
  | Choice4Of7 of 'T4
  | Choice5Of7 of 'T5
  | Choice6Of7 of 'T6
  | Choice7Of7 of 'T7

Full name: Microsoft.FSharp.Core.Choice<_,_,_,_,_,_,_>

  type: Choice<'T1,'T2,'T3,'T4,'T5,'T6,'T7>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2,'T3,'T4,'T5,'T6,'T7>>
  implements: IComparable
  implements: Collections.IStructuralComparable


--------------------
type Choice<'T1,'T2,'T3,'T4,'T5,'T6> =
  | Choice1Of6 of 'T1
  | Choice2Of6 of 'T2
  | Choice3Of6 of 'T3
  | Choice4Of6 of 'T4
  | Choice5Of6 of 'T5
  | Choice6Of6 of 'T6

Full name: Microsoft.FSharp.Core.Choice<_,_,_,_,_,_>

  type: Choice<'T1,'T2,'T3,'T4,'T5,'T6>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2,'T3,'T4,'T5,'T6>>
  implements: IComparable
  implements: Collections.IStructuralComparable


--------------------
type Choice<'T1,'T2,'T3,'T4,'T5> =
  | Choice1Of5 of 'T1
  | Choice2Of5 of 'T2
  | Choice3Of5 of 'T3
  | Choice4Of5 of 'T4
  | Choice5Of5 of 'T5

Full name: Microsoft.FSharp.Core.Choice<_,_,_,_,_>

  type: Choice<'T1,'T2,'T3,'T4,'T5>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2,'T3,'T4,'T5>>
  implements: IComparable
  implements: Collections.IStructuralComparable


--------------------
type Choice<'T1,'T2,'T3,'T4> =
  | Choice1Of4 of 'T1
  | Choice2Of4 of 'T2
  | Choice3Of4 of 'T3
  | Choice4Of4 of 'T4

Full name: Microsoft.FSharp.Core.Choice<_,_,_,_>

  type: Choice<'T1,'T2,'T3,'T4>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2,'T3,'T4>>
  implements: IComparable
  implements: Collections.IStructuralComparable


--------------------
type Choice<'T1,'T2,'T3> =
  | Choice1Of3 of 'T1
  | Choice2Of3 of 'T2
  | Choice3Of3 of 'T3

Full name: Microsoft.FSharp.Core.Choice<_,_,_>

  type: Choice<'T1,'T2,'T3>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2,'T3>>
  implements: IComparable
  implements: Collections.IStructuralComparable


--------------------
type Choice<'T1,'T2> =
  | Choice1Of2 of 'T1
  | Choice2Of2 of 'T2

Full name: Microsoft.FSharp.Core.Choice<_,_>

  type: Choice<'T1,'T2>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<'T1,'T2>>
  implements: IComparable
  implements: Collections.IStructuralComparable
val Right : 'b -> Either<'a,'b>

Full name: Snippet.Right
union case Choice.Choice1Of2: 'T1 -> Choice<'T1,'T2>
val Left : 'a -> Either<'a,'b>

Full name: Snippet.Left
union case Choice.Choice2Of2: 'T2 -> Choice<'T1,'T2>
val sendReq : string -> (string * string) list -> string -> string -> Either<string,XmlNodeList>

Full name: Snippet.sendReq
val url : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val files : (string * string) list

  type: (string * string) list
  implements: Collections.IStructuralEquatable
  implements: IComparable<List<string * string>>
  implements: IComparable
  implements: Collections.IStructuralComparable
  implements: Collections.Generic.IEnumerable<string * string>
  implements: Collections.IEnumerable
type 'T list = List<'T>

Full name: Microsoft.FSharp.Collections.list<_>

  type: 'T list
  implements: Collections.IStructuralEquatable
  implements: IComparable<List<'T>>
  implements: IComparable
  implements: Collections.IStructuralComparable
  implements: Collections.Generic.IEnumerable<'T>
  implements: Collections.IEnumerable
val action : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val xml : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
type XmlNodeList =
  class
    member Count : int
    member GetEnumerator : unit -> System.Collections.IEnumerator
    member Item : int -> System.Xml.XmlNode
    member ItemOf : int -> System.Xml.XmlNode
  end

Full name: System.Xml.XmlNodeList

  type: XmlNodeList
  implements: Collections.IEnumerable
  implements: IDisposable
val req : HttpWebRequest

  type: HttpWebRequest
  implements: Runtime.Serialization.ISerializable
  inherits: WebRequest
  inherits: MarshalByRefObject
type HttpWebRequest =
  class
    inherit System.Net.WebRequest
    new : unit -> System.Net.HttpWebRequest
    member Abort : unit -> unit
    member Accept : string with get, set
    member AddRange : int -> unit
    member AddRange : int64 -> unit
    member AddRange : int * int -> unit
    member AddRange : int64 * int64 -> unit
    member AddRange : string * int -> unit
    member AddRange : string * int64 -> unit
    member AddRange : string * int * int -> unit
    member AddRange : string * int64 * int64 -> unit
    member Address : System.Uri
    member AllowAutoRedirect : bool with get, set
    member AllowReadStreamBuffering : bool with get, set
    member AllowWriteStreamBuffering : bool with get, set
    member AutomaticDecompression : System.Net.DecompressionMethods with get, set
    member BeginGetRequestStream : System.AsyncCallback * obj -> System.IAsyncResult
    member BeginGetResponse : System.AsyncCallback * obj -> System.IAsyncResult
    member ClientCertificates : System.Security.Cryptography.X509Certificates.X509CertificateCollection with get, set
    member Connection : string with get, set
    member ConnectionGroupName : string with get, set
    member ContentLength : int64 with get, set
    member ContentType : string with get, set
    member ContinueDelegate : System.Net.HttpContinueDelegate with get, set
    member ContinueTimeout : int with get, set
    member CookieContainer : System.Net.CookieContainer with get, set
    member Credentials : System.Net.ICredentials with get, set
    member Date : System.DateTime with get, set
    member EndGetRequestStream : System.IAsyncResult -> System.IO.Stream
    member EndGetRequestStream : System.IAsyncResult * System.Net.TransportContext -> System.IO.Stream
    member EndGetResponse : System.IAsyncResult -> System.Net.WebResponse
    member Expect : string with get, set
    member GetRequestStream : unit -> System.IO.Stream
    member GetRequestStream : System.Net.TransportContext -> System.IO.Stream
    member GetResponse : unit -> System.Net.WebResponse
    member HaveResponse : bool
    member Headers : System.Net.WebHeaderCollection with get, set
    member Host : string with get, set
    member IfModifiedSince : System.DateTime with get, set
    member KeepAlive : bool with get, set
    member MaximumAutomaticRedirections : int with get, set
    member MaximumResponseHeadersLength : int with get, set
    member MediaType : string with get, set
    member Method : string with get, set
    member Pipelined : bool with get, set
    member PreAuthenticate : bool with get, set
    member ProtocolVersion : System.Version with get, set
    member Proxy : System.Net.IWebProxy with get, set
    member ReadWriteTimeout : int with get, set
    member Referer : string with get, set
    member RequestUri : System.Uri
    member SendChunked : bool with get, set
    member ServerCertificateValidationCallback : System.Net.Security.RemoteCertificateValidationCallback with get, set
    member ServicePoint : System.Net.ServicePoint
    member SupportsCookieContainer : bool
    member Timeout : int with get, set
    member TransferEncoding : string with get, set
    member UnsafeAuthenticatedConnectionSharing : bool with get, set
    member UseDefaultCredentials : bool with get, set
    member UserAgent : string with get, set
    static member DefaultCachePolicy : System.Net.Cache.RequestCachePolicy with get, set
    static member DefaultMaximumErrorResponseLength : int with get, set
    static member DefaultMaximumResponseHeadersLength : int with get, set
  end

Full name: System.Net.HttpWebRequest

  type: HttpWebRequest
  implements: Runtime.Serialization.ISerializable
  inherits: WebRequest
  inherits: MarshalByRefObject
WebRequest.Create(requestUri: Uri) : WebRequest
WebRequest.Create(requestUriString: string) : WebRequest
property HttpWebRequest.ProtocolVersion: Version
type HttpVersion =
  class
    new : unit -> System.Net.HttpVersion
    static val Version10 : System.Version
    static val Version11 : System.Version
  end

Full name: System.Net.HttpVersion
field HttpVersion.Version10
property WebRequest.Method: string
property HttpWebRequest.KeepAlive: bool
property WebRequest.Timeout: int
property HttpWebRequest.ReadWriteTimeout: int
property WebRequest.Headers: WebHeaderCollection
Collections.Specialized.NameValueCollection.Add(c: Collections.Specialized.NameValueCollection) : unit
WebHeaderCollection.Add(header: string) : unit
Collections.Specialized.NameValueCollection.Add(name: string, value: string) : unit
WebHeaderCollection.Add(header: HttpResponseHeader, value: string) : unit
WebHeaderCollection.Add(header: HttpRequestHeader, value: string) : unit
val xmlBytes : byte []

  type: byte []
  implements: ICloneable
  implements: Collections.IList
  implements: Collections.ICollection
  implements: Collections.IStructuralComparable
  implements: Collections.IStructuralEquatable
  implements: Collections.Generic.IList<byte>
  implements: Collections.Generic.ICollection<byte>
  implements: seq<byte>
  implements: Collections.IEnumerable
  inherits: Array
type Encoding =
  class
    member BodyName : string
    member Clone : unit -> obj
    member CodePage : int
    member DecoderFallback : System.Text.DecoderFallback with get, set
    member EncoderFallback : System.Text.EncoderFallback with get, set
    member EncodingName : string
    member Equals : obj -> bool
    member GetByteCount : char [] -> int
    member GetByteCount : string -> int
    member GetByteCount : char * int -> int
    member GetByteCount : char [] * int * int -> int
    member GetBytes : char [] -> System.Byte []
    member GetBytes : string -> System.Byte []
    member GetBytes : char [] * int * int -> System.Byte []
    member GetBytes : char * int * System.Byte * int -> int
    member GetBytes : char [] * int * int * System.Byte [] * int -> int
    member GetBytes : string * int * int * System.Byte [] * int -> int
    member GetCharCount : System.Byte [] -> int
    member GetCharCount : System.Byte * int -> int
    member GetCharCount : System.Byte [] * int * int -> int
    member GetChars : System.Byte [] -> char []
    member GetChars : System.Byte [] * int * int -> char []
    member GetChars : System.Byte * int * char * int -> int
    member GetChars : System.Byte [] * int * int * char [] * int -> int
    member GetDecoder : unit -> System.Text.Decoder
    member GetEncoder : unit -> System.Text.Encoder
    member GetHashCode : unit -> int
    member GetMaxByteCount : int -> int
    member GetMaxCharCount : int -> int
    member GetPreamble : unit -> System.Byte []
    member GetString : System.Byte [] -> string
    member GetString : System.Byte [] * int * int -> string
    member HeaderName : string
    member IsAlwaysNormalized : unit -> bool
    member IsAlwaysNormalized : System.Text.NormalizationForm -> bool
    member IsBrowserDisplay : bool
    member IsBrowserSave : bool
    member IsMailNewsDisplay : bool
    member IsMailNewsSave : bool
    member IsReadOnly : bool
    member IsSingleByte : bool
    member WebName : string
    member WindowsCodePage : int
    static member ASCII : System.Text.Encoding
    static member BigEndianUnicode : System.Text.Encoding
    static member Convert : System.Text.Encoding * System.Text.Encoding * System.Byte [] -> System.Byte []
    static member Convert : System.Text.Encoding * System.Text.Encoding * System.Byte [] * int * int -> System.Byte []
    static member Default : System.Text.Encoding
    static member GetEncoding : int -> System.Text.Encoding
    static member GetEncoding : string -> System.Text.Encoding
    static member GetEncoding : int * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
    static member GetEncoding : string * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
    static member GetEncodings : unit -> System.Text.EncodingInfo []
    static member UTF32 : System.Text.Encoding
    static member UTF7 : System.Text.Encoding
    static member UTF8 : System.Text.Encoding
    static member Unicode : System.Text.Encoding
  end

Full name: System.Text.Encoding

  type: Encoding
  implements: ICloneable
property Encoding.ASCII: Encoding
Encoding.GetBytes(s: string) : byte []
Encoding.GetBytes(chars: char []) : byte []
Encoding.GetBytes(chars: char [], index: int, count: int) : byte []
Encoding.GetBytes(chars: nativeptr<char>, charCount: int, bytes: nativeptr<byte>, byteCount: int) : int
Encoding.GetBytes(s: string, charIndex: int, charCount: int, bytes: byte [], byteIndex: int) : int
Encoding.GetBytes(chars: char [], charIndex: int, charCount: int, bytes: byte [], byteIndex: int) : int
property WebRequest.ContentType: string
property WebRequest.ContentLength: int64
Multiple items
val int64 : 'T -> int64 (requires member op_Explicit)

Full name: Microsoft.FSharp.Core.Operators.int64

--------------------
type int64<'Measure> = int64

Full name: Microsoft.FSharp.Core.int64<_>

  type: int64<'Measure>
  implements: IComparable
  implements: IConvertible
  implements: IFormattable
  implements: IComparable<int64<'Measure>>
  implements: IEquatable<int64<'Measure>>
  inherits: ValueType


--------------------
type int64 = Int64

Full name: Microsoft.FSharp.Core.int64

  type: int64
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<int64>
  implements: IEquatable<int64>
  inherits: ValueType
property Array.Length: int
val reqStream : Stream

  type: Stream
  implements: IDisposable
  inherits: MarshalByRefObject
WebRequest.GetRequestStream() : Stream
HttpWebRequest.GetRequestStream(context: byref<TransportContext>) : Stream
Stream.Write(buffer: byte [], offset: int, count: int) : unit
Stream.Close() : unit
val resp : WebResponse

  type: WebResponse
  implements: Runtime.Serialization.ISerializable
  implements: IDisposable
  inherits: MarshalByRefObject
WebRequest.GetResponse() : WebResponse
val stream : Stream

  type: Stream
  implements: IDisposable
  inherits: MarshalByRefObject
WebResponse.GetResponseStream() : Stream
val reader : StreamReader

  type: StreamReader
  implements: IDisposable
  inherits: TextReader
  inherits: MarshalByRefObject
type StreamReader =
  class
    inherit System.IO.TextReader
    new : System.IO.Stream -> System.IO.StreamReader
    new : System.IO.Stream * bool -> System.IO.StreamReader
    new : System.IO.Stream * System.Text.Encoding -> System.IO.StreamReader
    new : System.IO.Stream * System.Text.Encoding * bool -> System.IO.StreamReader
    new : System.IO.Stream * System.Text.Encoding * bool * int -> System.IO.StreamReader
    new : System.IO.Stream * System.Text.Encoding * bool * int * bool -> System.IO.StreamReader
    new : string -> System.IO.StreamReader
    new : string * bool -> System.IO.StreamReader
    new : string * System.Text.Encoding -> System.IO.StreamReader
    new : string * System.Text.Encoding * bool -> System.IO.StreamReader
    new : string * System.Text.Encoding * bool * int -> System.IO.StreamReader
    member BaseStream : System.IO.Stream
    member Close : unit -> unit
    member CurrentEncoding : System.Text.Encoding
    member DiscardBufferedData : unit -> unit
    member EndOfStream : bool
    member Peek : unit -> int
    member Read : unit -> int
    member Read : char [] * int * int -> int
    member ReadAsync : char [] * int * int -> System.Threading.Tasks.Task<int>
    member ReadBlock : char [] * int * int -> int
    member ReadBlockAsync : char [] * int * int -> System.Threading.Tasks.Task<int>
    member ReadLine : unit -> string
    member ReadLineAsync : unit -> System.Threading.Tasks.Task<string>
    member ReadToEnd : unit -> string
    member ReadToEndAsync : unit -> System.Threading.Tasks.Task<string>
    static val Null : System.IO.StreamReader
  end

Full name: System.IO.StreamReader

  type: StreamReader
  implements: IDisposable
  inherits: TextReader
  inherits: MarshalByRefObject
val xdoc : XmlDocument

  type: XmlDocument
  implements: ICloneable
  implements: Collections.IEnumerable
  implements: XPath.IXPathNavigable
  inherits: XmlNode
type XmlDocument =
  class
    inherit System.Xml.XmlNode
    new : unit -> System.Xml.XmlDocument
    new : System.Xml.XmlNameTable -> System.Xml.XmlDocument
    member BaseURI : string
    member CloneNode : bool -> System.Xml.XmlNode
    member CreateAttribute : string -> System.Xml.XmlAttribute
    member CreateAttribute : string * string -> System.Xml.XmlAttribute
    member CreateAttribute : string * string * string -> System.Xml.XmlAttribute
    member CreateCDataSection : string -> System.Xml.XmlCDataSection
    member CreateComment : string -> System.Xml.XmlComment
    member CreateDocumentFragment : unit -> System.Xml.XmlDocumentFragment
    member CreateDocumentType : string * string * string * string -> System.Xml.XmlDocumentType
    member CreateElement : string -> System.Xml.XmlElement
    member CreateElement : string * string -> System.Xml.XmlElement
    member CreateElement : string * string * string -> System.Xml.XmlElement
    member CreateEntityReference : string -> System.Xml.XmlEntityReference
    member CreateNavigator : unit -> System.Xml.XPath.XPathNavigator
    member CreateNode : string * string * string -> System.Xml.XmlNode
    member CreateNode : System.Xml.XmlNodeType * string * string -> System.Xml.XmlNode
    member CreateNode : System.Xml.XmlNodeType * string * string * string -> System.Xml.XmlNode
    member CreateProcessingInstruction : string * string -> System.Xml.XmlProcessingInstruction
    member CreateSignificantWhitespace : string -> System.Xml.XmlSignificantWhitespace
    member CreateTextNode : string -> System.Xml.XmlText
    member CreateWhitespace : string -> System.Xml.XmlWhitespace
    member CreateXmlDeclaration : string * string * string -> System.Xml.XmlDeclaration
    member DocumentElement : System.Xml.XmlElement
    member DocumentType : System.Xml.XmlDocumentType
    member GetElementById : string -> System.Xml.XmlElement
    member GetElementsByTagName : string -> System.Xml.XmlNodeList
    member GetElementsByTagName : string * string -> System.Xml.XmlNodeList
    member Implementation : System.Xml.XmlImplementation
    member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
    member InnerText : -> string with deb set
    member InnerXml : string with get, set
    member IsReadOnly : bool
    member Load : string -> unit
    member Load : System.IO.Stream -> unit
    member Load : System.IO.TextReader -> unit
    member Load : System.Xml.XmlReader -> unit
    member LoadXml : string -> unit
    member LocalName : string
    member Name : string
    member NameTable : System.Xml.XmlNameTable
    member NodeType : System.Xml.XmlNodeType
    member OwnerDocument : System.Xml.XmlDocument
    member ParentNode : System.Xml.XmlNode
    member PreserveWhitespace : bool with get, set
    member ReadNode : System.Xml.XmlReader -> System.Xml.XmlNode
    member Save : string -> unit
    member Save : System.IO.Stream -> unit
    member Save : System.IO.TextWriter -> unit
    member Save : System.Xml.XmlWriter -> unit
    member SchemaInfo : System.Xml.Schema.IXmlSchemaInfo
    member Schemas : System.Xml.Schema.XmlSchemaSet with get, set
    member Validate : System.Xml.Schema.ValidationEventHandler -> unit
    member Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit
    member WriteContentTo : System.Xml.XmlWriter -> unit
    member WriteTo : System.Xml.XmlWriter -> unit
    member XmlResolver : -> System.Xml.XmlResolver with deb set
  end

Full name: System.Xml.XmlDocument

  type: XmlDocument
  implements: ICloneable
  implements: Collections.IEnumerable
  implements: XPath.IXPathNavigable
  inherits: XmlNode
XmlDocument.LoadXml(xml: string) : unit
TextReader.ReadToEnd() : string
Multiple items
val Right : 'b -> Either<'a,'b>

Full name: Snippet.Right

--------------------
active recognizer Right: Choice<'a,'b> -> Choice<'a,'b>

Full name: Snippet.( |Right|Left| )
XmlNode.SelectNodes(xpath: string) : XmlNodeList
XmlNode.SelectNodes(xpath: string, nsmgr: XmlNamespaceManager) : XmlNodeList
type WebException =
  class
    inherit System.InvalidOperationException
    new : unit -> System.Net.WebException
    new : string -> System.Net.WebException
    new : string * System.Exception -> System.Net.WebException
    new : string * System.Net.WebExceptionStatus -> System.Net.WebException
    new : string * System.Exception * System.Net.WebExceptionStatus * System.Net.WebResponse -> System.Net.WebException
    member GetObjectData : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> unit
    member Response : System.Net.WebResponse
    member Status : System.Net.WebExceptionStatus
  end

Full name: System.Net.WebException

  type: WebException
  implements: Runtime.InteropServices._Exception
  implements: Runtime.Serialization.ISerializable
  inherits: InvalidOperationException
  inherits: SystemException
  inherits: exn
Multiple items
val exn : WebException

  type: WebException
  implements: Runtime.InteropServices._Exception
  implements: Runtime.Serialization.ISerializable
  inherits: InvalidOperationException
  inherits: SystemException
  inherits: exn


--------------------
type exn = Exception

Full name: Microsoft.FSharp.Core.exn

  type: exn
  implements: Runtime.Serialization.ISerializable
  implements: Runtime.InteropServices._Exception
Multiple items
val Left : 'a -> Either<'a,'b>

Full name: Snippet.Left

--------------------
active recognizer Left: Choice<'a,'b> -> Choice<'a,'b>

Full name: Snippet.( |Right|Left| )
property Exception.Message: string
type ResultsInfo =
  {file_url: string;
   file_size: float;
   warning: string option;}

Full name: Snippet.ResultsInfo

  type: ResultsInfo
  implements: IEquatable<ResultsInfo>
  implements: Collections.IStructuralEquatable
  implements: IComparable<ResultsInfo>
  implements: IComparable
  implements: Collections.IStructuralComparable
ResultsInfo.file_url: string
ResultsInfo.file_size: float
Multiple items
val float : 'T -> float (requires member op_Explicit)

Full name: Microsoft.FSharp.Core.Operators.float

--------------------
type float<'Measure> = float

Full name: Microsoft.FSharp.Core.float<_>

  type: float<'Measure>
  implements: IComparable
  implements: IConvertible
  implements: IFormattable
  implements: IComparable<float<'Measure>>
  implements: IEquatable<float<'Measure>>
  inherits: ValueType


--------------------
type float = Double

Full name: Microsoft.FSharp.Core.float

  type: float
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<float>
  implements: IEquatable<float>
  inherits: ValueType
ResultsInfo.warning: string option
type 'T option = Option<'T>

Full name: Microsoft.FSharp.Core.option<_>

  type: 'T option
  implements: Collections.IStructuralEquatable
  implements: IComparable<Option<'T>>
  implements: IComparable
  implements: Collections.IStructuralComparable
exception Argot2Error of string

Full name: Snippet.Argot2Error
val correct : string -> string option

Full name: Snippet.correct
val txt : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
Object.Equals(obj: obj) : bool
String.Equals(value: string) : bool
String.Equals(value: string, comparisonType: StringComparison) : bool
val getResults' : int -> ResultsInfo

Full name: Snippet.getResults'
val job_id : int

  type: int
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<int>
  implements: IEquatable<int>
  inherits: ValueType
Multiple items
val int : 'T -> int (requires member op_Explicit)

Full name: Microsoft.FSharp.Core.Operators.int

--------------------
type int<'Measure> = int

Full name: Microsoft.FSharp.Core.int<_>

  type: int<'Measure>
  implements: IComparable
  implements: IConvertible
  implements: IFormattable
  implements: IComparable<int<'Measure>>
  implements: IEquatable<int<'Measure>>
  inherits: ValueType


--------------------
type int = int32

Full name: Microsoft.FSharp.Core.int

  type: int
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<int>
  implements: IEquatable<int>
  inherits: ValueType
val xml1 : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
String.Replace(oldValue: string, newValue: string) : string
String.Replace(oldChar: char, newChar: char) : string
Object.ToString() : string
Int32.ToString(provider: IFormatProvider) : string
Int32.ToString(format: string) : string
Int32.ToString(format: string, provider: IFormatProvider) : string
val nodes_opt : Either<string,XmlNodeList>

  type: Either<string,XmlNodeList>
  implements: Collections.IStructuralEquatable
  implements: IComparable<Choice<XmlNodeList,string>>
  implements: IComparable
  implements: Collections.IStructuralComparable
val err : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val raise : Exception -> 'T

Full name: Microsoft.FSharp.Core.Operators.raise
val nodes : XmlNodeList

  type: XmlNodeList
  implements: Collections.IEnumerable
  implements: IDisposable
XmlNodeList.Item(index: int) : XmlNode
val getResults : int -> int -> int -> Async<ResultsInfo option>

Full name: Snippet.getResults
val n : int

  type: int
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<int>
  implements: IEquatable<int>
  inherits: ValueType
val max_retries : int

  type: int
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<int>
  implements: IEquatable<int>
  inherits: ValueType
val res : ResultsInfo

  type: ResultsInfo
  implements: IEquatable<ResultsInfo>
  implements: Collections.IStructuralEquatable
  implements: IComparable<ResultsInfo>
  implements: IComparable
  implements: Collections.IStructuralComparable
val warn : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
static member Async.Sleep : millisecondsDueTime:int -> Async<unit>
type JobsInfo =
  {job_id: int;
   error: string option;}

Full name: Snippet.JobsInfo

  type: JobsInfo
  implements: IEquatable<JobsInfo>
  implements: Collections.IStructuralEquatable
  implements: IComparable<JobsInfo>
  implements: IComparable
  implements: Collections.IStructuralComparable
JobsInfo.job_id: int
JobsInfo.error: string option
namespace Microsoft
namespace Microsoft.FSharp
namespace Microsoft.FSharp.Control
static member Async.Raise : e:#exn -> Async<'b>

Full name: Snippet.Raise
val e : #exn

  type: #exn
  implements: Runtime.Serialization.ISerializable
  implements: Runtime.InteropServices._Exception
  inherits: exn
type exn = Exception

Full name: Microsoft.FSharp.Core.exn

  type: exn
  implements: Runtime.Serialization.ISerializable
  implements: Runtime.InteropServices._Exception
static member Async.FromContinuations : callback:(('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T>
val econt : (exn -> unit)
val runArgot2 : string -> string -> float -> float -> float -> Async<JobsInfo>

Full name: Snippet.runArgot2
val out_blast_tab : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val out_hmm_tab : string

  type: string
  implements: IComparable
  implements: ICloneable
  implements: IConvertible
  implements: IComparable<string>
  implements: seq<char>
  implements: Collections.IEnumerable
  implements: IEquatable<string>
val inf_content : float

  type: float
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<float>
  implements: IEquatable<float>
  inherits: ValueType
val int_confidence : float

  type: float
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<float>
  implements: IEquatable<float>
  inherits: ValueType
val totalScore : float

  type: float
  implements: IComparable
  implements: IFormattable
  implements: IConvertible
  implements: IComparable<float>
  implements: IEquatable<float>
  inherits: ValueType
Object.ToString() : string
Double.ToString(provider: IFormatProvider) : string
Double.ToString(format: string) : string
Double.ToString(format: string, provider: IFormatProvider) : string
static member Async.Raise : e:#exn -> Async<'b>
type EntryPointAttribute =
  class
    inherit Attribute
    new : unit -> EntryPointAttribute
  end

Full name: Microsoft.FSharp.Core.EntryPointAttribute

  type: EntryPointAttribute
  implements: Runtime.InteropServices._Attribute
  inherits: Attribute
val main : string [] -> int

Full name: Snippet.main
val args : string []

  type: string []
  implements: ICloneable
  implements: Collections.IList
  implements: Collections.ICollection
  implements: Collections.IStructuralComparable
  implements: Collections.IStructuralEquatable
  implements: Collections.Generic.IList<string>
  implements: Collections.Generic.ICollection<string>
  implements: seq<string>
  implements: Collections.IEnumerable
  inherits: Array
static member Async.RunSynchronously : computation:Async<'T> * ?timeout:int * ?cancellationToken:Threading.CancellationToken -> 'T
val job_id : JobsInfo

  type: JobsInfo
  implements: IEquatable<JobsInfo>
  implements: Collections.IStructuralEquatable
  implements: IComparable<JobsInfo>
  implements: IComparable
  implements: Collections.IStructuralComparable
val res : unit option

  type: unit option
  implements: Collections.IStructuralEquatable
  implements: IComparable<Option<unit>>
  implements: IComparable
  implements: Collections.IStructuralComparable
val urls : Async<unit> list

  type: Async<unit> list
  implements: Collections.IStructuralEquatable
  implements: IComparable<List<Async<unit>>>
  implements: IComparable
  implements: Collections.IStructuralComparable
  implements: Collections.Generic.IEnumerable<Async<unit>>
  implements: Collections.IEnumerable
static member Async.Parallel : computations:seq<Async<'T>> -> Async<'T []>
val ignore : 'T -> unit

Full name: Microsoft.FSharp.Core.Operators.ignore
Multiple items
val exn : exn

  type: exn
  implements: Runtime.Serialization.ISerializable
  implements: Runtime.InteropServices._Exception


--------------------
type exn = Exception

Full name: Microsoft.FSharp.Core.exn

  type: exn
  implements: Runtime.Serialization.ISerializable
  implements: Runtime.InteropServices._Exception