code: function Fingerprint( collection , rawFingerprint = {} , isPartial = false ) {
  	this.collection = collection ;
  	collection.driver.checkId( rawFingerprint ) ;
  
  	this.fromPartial = !! isPartial ;
  	this.def = null ;
  	this.partial = null ;
  
  	if ( this.fromPartial ) {
  		this.partial = rawFingerprint ;
  		Object.defineProperty( this , 'def' , {
  			configurable: true ,
  			enumerable: true ,
  			get: Fingerprint.prototype.flatten.bind( this )
  		} ) ;
  	}
  	else {
  		this.def = rawFingerprint ;
  		Object.defineProperty( this , 'partial' , {
  			configurable: true ,
  			enumerable: true ,
  			get: Fingerprint.prototype.unflatten.bind( this )
  		} ) ;
  	}
  
  	//Object.defineProperty( rawFingerprint , '$' , { value: this } ) ;
  }
docs: /*
  The goal of this class is to figure out weither a fingerprint is unique or not, thus detecting if a query should return a Batch or a Document.
  Some other data may be calculated at that time.
  For instance, it does not much.
  
  options:
  isPartial: a sparse document is given