Method SaveState()
		Local obj:=New JsonObject
		
		Local docs:=New JsonArray
		For Local doc:=Eachin _openDocs
			docs.Add( New JsonString( doc.Path ) )
		Next
		obj["openDocuments"]=docs
		
		Local recent:=New JsonArray
		For Local path:=Eachin _recent
			recent.Add( New JsonString( path ) )
		End
		obj["recentFiles"]=recent
		
		Local projects:=New JsonArray
		For Local dir:=Eachin _projects
			projects.Add( New JsonString( dir ) )
		Next
		obj["openProjects"]=projects
		
		obj["windowRect"]=ToJson( Frame )
		
		obj["consoleSize"]=New JsonNumber( _docker.GetViewSize( _console ) )
		
		obj["browserSize"]=New JsonNumber( _docker.GetViewSize( _browser ) )
		
		obj["helpTreeSize"]=New JsonNumber( _helpView.GetViewSize( _helpView.HelpTree ) )
		
		If _lockedDoc obj["lockedDocument"]=New JsonString( _lockedDoc.Path )
		
		
		local k:Int
		local out:string = ""
		local str:string = ""
		local chr:string
		local tab:string = ""
		local length:int
		for k = 0 to obj.ToJson().Length
      chr = obj.ToJson().Mid(k,1)
      select chr
        case "{", "["
          str = str + chr
          out = out + str + "~n"
          tab = tab + "  "
          str = tab
        case "}", "]"
          out = out + str + "~n"
          length = tab.Length
          tab = tab.Left( length - 2 )
          str = tab + chr
        case ","
          str = str + chr
          out = out + str + "~n"
          str = tab
        default
          str = str + chr
      end
    next
    out = out + str + "~n"
    
		SaveString( out,"bin/ted2.state.json" )
	End