public static Task Task(this IAsyncStateMachine sm) { // sm.Task var task = Expression.Lambda <Func <object> >( Expression.Property( Expression.Field(Expression.Constant(sm), sm.BuilderField()), sm.BuilderField().FieldType.GetProperty("Task"))).Compile().Invoke(); return(task as Task); }