def value
      val = self.lazy_proc?(@value) ? self.coerce(@value.call) : @value
      val.respond_to?(:returned_value) ? val.returned_value : val
    end
def value
      val = self.lazy_proc?(@value) ? self.coerce(@value.call) : @value
      val.respond_to?(:returned_value) ? val.returned_value : val
    end
if reading a lazy_proc, call the proc and return its coerced return val
 otherwise, just return the stored value