whole_func_string: function(name, mainTester, parentTester) {
          if(!mainTester) mainTester = this
  
          this.id = groupid()
          this.mainTester = mainTester // the mainTester is used to easily figure out if the test results have been accessed (so early accesses can be detected)
          this.parentTester = parentTester // used to reset timeouts
          this.name = name
  
          this.doneTests = 0
          this.doneAsserts = 0
          this.runningTests = 0 // the number of subtests created synchronously
          this.doneCalled = false
          this.doSourcemappery = true // whether to do source mapping, if possible, within this test
  
          this.complete = new Future // resolved when done
      }
func_code_string: function(name, mainTester, parentTester) {
          if(!mainTester) mainTester = this
  
          this.id = groupid()
          this.mainTester = mainTester // the mainTester is used to easily figure out if the test results have been accessed (so early accesses can be detected)
          this.parentTester = parentTester // used to reset timeouts
          this.name = name
  
          this.doneTests = 0
          this.doneAsserts = 0
          this.runningTests = 0 // the number of subtests created synchronously
          this.doneCalled = false
          this.doSourcemappery = true // whether to do source mapping, if possible, within this test
  
          this.complete = new Future // resolved when done
      }
func_documentation_string: the prototype of objects used to write tests and contain the results of tests