public InferenceContext(N4JSTypeSystem ts,TypeSystemHelper tsh,CancelIndicator cancelIndicator,RuleEnvironment G,InferenceVariable... inferenceVariables){
  Objects.requireNonNull(ts);
  Objects.requireNonNull(tsh);
  Objects.requireNonNull(cancelIndicator);
  Objects.requireNonNull(G);
  this.ts=ts;
  this.tsh=tsh;
  this.cancelIndicator=cancelIndicator;
  this.G=G;
  addInferenceVariables(false,inferenceVariables);
  this.reducer=new Reducer(this,G,ts,tsh);
  this.currentBounds=new BoundSet(this,G,ts);
}

public InferenceContext ( N4JSTypeSystem ts , TypeSystemHelper tsh , CancelIndicator cancelIndicator , RuleEnvironment G , InferenceVariable ... inferenceVariables ) { Objects . requireNonNull ( ts ) ; Objects . requireNonNull ( tsh ) ; Objects . requireNonNull ( cancelIndicator ) ; Objects . requireNonNull ( G ) ; this . ts = ts ; this . tsh = tsh ; this . cancelIndicator = cancelIndicator ; this . G = G ; addInferenceVariables ( false , inferenceVariables ) ; this . reducer = new Reducer ( this , G , ts , tsh ) ; this . currentBounds = new BoundSet ( this , G , ts ) ; }
creates a new , empty inference context for the given inference variables .
