public IType Eval(ITypeEnv typeEnv) { IType result; if (!typeEnv.TryGetValue(mTypeVarName, out result)) { throw new InvalidOperationException( string.Format("unbound type variable: {0}", mTypeVarName) ); } return result; }