/*
Given a function, a new function is returned that invokes the given
function. The return value from the function is always the `self` object.
function delegateProperty(f) {
    return function() {
      if (!arguments.length) return f();
      f.apply(null, arguments);
      return self;
    };
  }