public InferenceState Solve(FreshVariableStream fresh, IImmutableList <IContextEntry> prefix, IImmutableList <IContextEntry> suffix)
 {
     switch (this.Left, this.Right)
     {
 private TypeInference(FreshVariableStream fresh, IImmutableList <IContextEntry> context)
 {
     this._state = new InferenceState(fresh, context);
 }
 public InferenceState(FreshVariableStream fresh, IImmutableList <IContextEntry> context)
 {
     this.Fresh   = fresh;
     this.Context = context;
 }
 public InferenceState(FreshVariableStream fresh, params IContextEntry[] context)
 {
     this.Fresh   = fresh;
     this.Context = context.ToImmutableList();
 }
 public FreshVariableStream MakeHull(FreshVariableStream fresh, out IType hull, out IImmutableList <(string name, IType replaced)> constraints)