I don't think that it is the right thing: Y is supposed to be noise in the same space as X, right?
Second problem, right now `expr` accepts either data or None for Y, so one of these would not pass space.validate(data).
Should we have a flag member that indicates which behaviour is wanted?