anchor.diff:  *)
   open System
   open System.IO
  +open System.Text
   
   // 入出力のストリームを初期化
  -let sbOut = new Text.StringBuilder()
  -let sbErr = new Text.StringBuilder()
  +let sbOut = new StringBuilder()
  +let sbErr = new StringBuilder()
   let inStream = new StringReader("")
   let outStream = new StringWriter(sbOut)
   let errStream = new StringWriter(sbErr)
  
positive.code: たとえばまず宣言を評価します:
  *)
  
  evalInteraction "let xxx = 1 + 1"
  
  (**
  
  
negative.code: *)
  open Microsoft.FSharp.Compiler
  
  // ツールチップを取得する
  checkResults.GetToolTipTextAlternate(1, 2, "xxx + xx", ["xxx"], FSharpTokenTag.IDENT) 
  
  checkResults.GetSymbolUseAtLocation(1, 2, "xxx + xx", ["xxx"]) // シンボル xxx
    
  (**
  'fsi'オブジェクト
  -----------------
  
  スクリプトのコードが'fsi'オブジェクトにアクセスできるようにしたい場合、
  このオブジェクトの実装を明示的に渡さなければなりません。
  通常、FSharp.Compiler.Interactive.Settings.dll由来の1つが使われます。
  *)
  
  let fsiConfig2 = FsiEvaluationSession.GetDefaultConfiguration(fsi)
  
  (**
  収集可能なコード生成
  --------------------
  
  FsiEvaluationSessionを使用してコードを評価すると、
  .NET の動的アセンブリを生成し、他のリソースを使用します。
  `collectible=true` を渡すことで、生成されたコードを収集可能に出来ます。
  しかしながら、例えば `EvalExpression` から返される `FsiValue` オブジェクトがあって、
  `FsiEvaluationSession` を破棄してしまったに違いないような、
  型を含む未解放のオブジェクト参照がない場合に限ってコードは収集可能です。
  [収集可能なアセンブリに対する制限](https://msdn.microsoft.com/ja-jp/library/dd554932%28v=vs.110%29.aspx#Anchor_1)
  も参照してください。
  
  以下の例は200個の評価セッションを生成しています。 `collectible=true` と `use session = ...`
  の両方を使っていることに気をつけてください。
  
  収集可能なコードが正しく動いた場合、全体としてのリソース使用量は
  評価が進んでも線形には増加しないでしょう。
  *)
  
  let collectionTest() = 
  
      for i in 1 .. 200 do
          let defaultArgs = [|"fsi.exe";"--noninteractive";"--nologo";"--gui-"|]
          use inStream = new StringReader("")
          use outStream = new StringWriter()
          use errStream = new StringWriter()
  
          let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration()
          use session = FsiEvaluationSession.Create(fsiConfig, defaultArgs, inStream, outStream, errStream, collectible=true)
          
          session.EvalInteraction (sprintf "type D = { v : int }")
          let v = session.EvalExpression (sprintf "{ v = 42 * %d }" i)
          printfn "その %d, 結果 = %A" i v.Value.ReflectionValue
  
  // collectionTest()  <-- このようにテストを実行する