Because the Time constant did not exist inside BasicObject.
The previous work around was to add a double colon before Time, but by changing the constant lookup, you can allow users to not worry about prefacing constants in DSLs with a double colon.
The reason for this is that the block passed to filter is instance_evaled inside the context of an instance of a subclass of BasicObject, so the constant lookup rules in BasicObject apply.