I look at this and think: won't this break for instance_variable_set?
You can't tell anything about an instance variable in ruby if it can be set from anywhere. Of course it's a special case