docs: function parse_predicates(Type) {
  
  	//function first_letter_not_dollar(k) {
  	//	return k[0] !== '$';
  	//}
  
  	function parse_data(opts) {
  		debug.assert(opts).ignore(undefined).is('object');
  
  		opts = opts || {};
  		var datakey = get_predicate_datakey(Type);
  		var res = {};
  		ARRAY(Object.keys(opts)).forEach(function(i) {
  			if(first_letter_is_dollar(i)) {
  				// Parse top level properties
  				parse_top_level_properties(res, opts, i);
  			} else {
  				// Parse meta properties
  				parse_meta_properties(res, opts, datakey, i);
  			}
  		});
  		return res;
  	}
  
  	return parse_data;
  }