docs: function createPropertyResolver(properties)
  {
    if ( isFunction( properties ) )
    {
      return properties;
    }
    else if ( isString( properties ) )
    {
      if ( properties in PropertyResolvers )
      {
        return PropertyResolvers[ properties ];
      }
  
      if ( isFormatInput( properties ) )
      {
        return createFormatter( properties );
      }
      else if ( isParseInput( properties ) )
      {
        return createParser( properties );
      }
      else
      {
        return function resolveProperty(model)
        {
          return model ? model[ properties ] : undefined;
        };
      }
    }
    else if ( isArray( properties ) )
    {
      return function resolveProperties(model)
      {
        return pull( model, properties );
      };
    }
    else if ( isObject( properties ) )
    {
      var propsArray = [];
      var propsResolver = [];
  
      for (var prop in properties)
      {
        propsArray.push( prop );
        propsResolver.push( createPropertyResolver( properties[ prop ] ) );
      }
  
      return function resolvePropertyObject(model)
      {
        var resolved = {};
  
        for (var i = 0; i < propsArray.length; i++)
        {
          var prop = propsArray[ i ];
  
          resolved[ prop ] = propsResolver[ i ]( model[ prop ] );
        }
  
        return resolved;
      };
    }
    else
    {
      return function resolveNone(model)
      {
        return model;
      };
    }
  }