(3 secs) You can work around this by adding a double colon in front of all constants inside of BasicObject.
However, with DSL design, users will generally not know to do that, as they aren't going to know that the blocks they are using are going to be evaluated inside the context of a BasicObject derived class.