whole_func_string: function (d){
      if (!arguments.length) {
        if (typeof _i === 'object'){
          var o = {};
          for (var prop in _i){
            o[prop] = _i[prop]();
          }
          return o;
        } else {
          return _i;
        }
      }
      _i = validate(d);
      // if _i is an object we expose the getter/setter methods of its attributes
      if (typeof _i === 'object'){
        for (var prop_object in _i){
          me[prop_object] = _i[prop_object];
        }
      }
    }
func_code_string: function (d){
      if (!arguments.length) {
        if (typeof _i === 'object'){
          var o = {};
          for (var prop in _i){
            o[prop] = _i[prop]();
          }
          return o;
        } else {
          return _i;
        }
      }
      _i = validate(d);
      // if _i is an object we expose the getter/setter methods of its attributes
      if (typeof _i === 'object'){
        for (var prop_object in _i){
          me[prop_object] = _i[prop_object];
        }
      }
    }
func_documentation_string: our getter-setter-combo including validation