code: function(value, options){
          if(!validate.isObject(options)) options = {};
          
          // deal with undefined
          if(options.ignoreUndefined && typeof value === 'undefined'){
              return undefined;
          }
          
          // cast to boolean as appropriate
          if(options.nativeTruthinessOnly){
              return Boolean(value);
          }
          return Boolean(value) && !validate.isEmpty(value) ? true : false;
      }
docs: A coercion for converting any arbitrary value to a boolean.
  
  By default, and value that is either natively falsey, like `0`, or that's
  considered empty by the [validate.isEmpty()]{@link external:isEmpty}
  function from validate.js will be coerced to `false`. Setting the
  coersion option `nativeTruthinessOnly` to a truthy value will cause the
  coercion to use only JavaScript's native casting to boolean.
  
  By default `undefined` is coerced to `false`, but this behaviour can be
  suppressed by setting the coercion option `ignoreUndefined` to a truthy
  value. Doing so will result in `undefined` being passed through the
  coercion un-altered. Note that setting both `nativeTruthiness=true` and
  `ignoreUndefined` will still result in `undefined` being passed
  unaltered.
  
  @member
  @type {CoercionCallback}