anchor.diff:    void onSpecResult(TeaoliveSpec spec);
   }
   
  +/**
  + * get TeaoliveEnvironment.
  + * this function is use for self testing about Teaolive.
  + */
  +TeaoliveEnvironment getCurrentTeaoliveEnvironment() => _environment;
  +
  +/**
  + * restore TeaoliveEnvironment.
  + * this function is use for self testing about Teaolive.
  + */
  +void restoreTeaoliveEnvironment(TeaoliveEnvironment environment){
  +  _environment = environment;
  +}
  +
  +/**
  + * re-initialize TeaoliveEnvironment.
  + * this function is use for self testing about Teaolive.
  + */
  +void resetTeoliveEnvironment(){
  +  _environment = null;
  +}
  +
   // implementation from here.
   
  -TeaoliveReporter _reporter;
  -TeaoliveRunner _runner;
  +TeaoliveEnvironment _environment;
  +
  +void checkEnvironment() {
  +  if(_environment == null){
  +    _environment = new TeaoliveEnvironment();
  +  }
  +}
  +
  +class TeaoliveEnvironment {
  +  TeaoliveReporter _reporter;
  +  TeaoliveRunner _runner;
  +  
  +  TeaoliveEnvironment(): _runner = new TeaoliveRunner(), _reporter = new TeaoliveReporter();
  +  
  +  void run() {
  +    _runner.run();
  +  }
  +  
  +  void set reporter(TeaoliveReporter reporter) {
  +    assert(reporter != null);
  +    _reporter = reporter;
  +  }
  +  
  +  TeaoliveReporter get reporter() => _reporter;
  +  
  +  TeaoliveRunner get runner() => _runner;
  +}
   
   class TeaoliveTextReporter implements TeaoliveReporter {
     
  
positive.code:  * It's use a "print" function.
   */
  void setTeaoliveReporter(TeaoliveReporter reporter) {
    _reporter = reporter;
  }
  
  /**
  
negative.code:         result = false;
        }
      } finally {
        _environment.reporter.onSuiteResult(this);
      }
    }
  
    void addSuite(TeaoliveSuite suite){
      tests.add(new TeaoliveTestHolder.suite(suite));
      _environment.runner._executeSuite(suite);
    }
    
    void addSpec(TeaoliveSpec spec){
      tests.add(new TeaoliveTestHolder.spec(spec));
      _environment.runner._executeSpec(spec);
    }
  }
  
  