docs: function encodeArray_PRIM_BULK_KNOWN( encoder, data, meta ) {
  	var DEBUG_THIS = false;
  
  	//
  	// Bulk Array for Known Object (PRIM_BULK_KNOWN)
  	//
  	// .......  .   +   Data Length  +  Entity ID + Bulk Op-Codes
  	// 0111110 [LN]    [16bit/32bit]     [16bit]     (IRef Meta)
  	//
  
  	// Lookup signature
  	var object, id, i, c_export = 0, eid=meta[0], getProps=meta[1], plen=-1,
  		propertyTable = [], waveTable = [], op8 = [], op16 = [], local_ids = [],
  		c_same = 0, use_same = false, last = undefined, iref_count = 0;
  	encoder.counters.arr_prim_bulk_known+=1;
  	encoder.log(LOG.ARR, "array.prim.known, len="+data.length+
  		", eid="+eid+", [");
  	encoder.logIndent(1);
  
  	// Put header
  	if (data.length < UINT16_MAX) { // 16-bit length prefix
  		encoder.stream8.write( pack1b( ARR_OP.PRIM_BULK_KNOWN | NUMTYPE_LN.UINT16 ) );
  		encoder.stream16.write( pack2b( data.length, false ) );
  		encoder.counters.arr_hdr+=3;
  	} else { // 32-bit length prefix
  		encoder.stream8.write( pack1b( ARR_OP.PRIM_BULK_KNOWN | NUMTYPE_LN.UINT32 ) );
  		encoder.stream32.write( pack4b( data.length, false ) );
  		encoder.counters.arr_hdr+=5;
  	}
  
  	// console.log("--> @"+(encoder.stream16.offset/2),"EID:",eid,"LEN:",data.length);
  
  	// Write EID
  	encoder.stream16.write( pack2b( eid, false ) );
  	encoder.counters.arr_hdr+=2;
  	// console.log("--- EID",eid," --- @"+encoder.stream16.offset);
  
  	// Populate fields
  	for (var j=0, el=data.length; j<el; ++j) {
  		object = data[j];
  
  		// Check if same to previous
  		if ( use_same && ((object === last) || 
  			 (encoder.optimize.cfwa_object_byval
  			&& deepEqual(last, object, {strict:true}))) ) {
  
  			// console.log(last,"==",object);
  
  			// First encounter, flush exports
  			if (c_export > 0) {
  				// console.log(">>[known="+c_export+" (ref)]>>");
  				if (DEBUG_THIS) console.log("->-[==] DEFINE(",c_export,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_export = 0;
  			}
  
  			// Flush every 32 items
  			c_same++;
  			if (c_same > 31) {
  				// console.log(">>[same="+c_same+"]>>");
  				if (DEBUG_THIS) console.log("->-[OV] REPEAT(",c_same,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.REPEAT | (c_same-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_same = 0;
  			}
  
  			// Don't process the rest
  			continue;
  
  		} else {
  
  			// Flush the moment we don't have a same item
  			if (c_same > 0) {
  				// console.log(last,"!=",object);
  				// console.log(">>[same="+c_same+"]>>");
  				if (DEBUG_THIS) console.log("->-[!=] REPEAT(",c_same,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.REPEAT | (c_same-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_same = 0;
  			}
  
  		}
  
  		// Keep last
  		last = object;
  		use_same = true;
  
  		// Check ByRef internally
  		id = encoder.lookupIRef( object );
  		if (id > -1) {
  			if (c_export > 0) {
  				// console.log(">>[known="+c_export+" (ref)]>>");
  				if (DEBUG_THIS) console.log("->-[iR] DEFINE(",c_export,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_export = 0;
  			}
  
  			// console.log(">>[iref="+id+" (ref)]>>");
  			if (DEBUG_THIS) console.log("->- IREF(",id,"), j=",j);
  			encodeLIREF( encoder, op8, op16, local_ids, id );
  			continue;
  		}
  
  		// Check ByRef externally
  		id = encoder.lookupXRef( object );
  		if (id > -1) {
  			if (c_export > 0) {
  				// console.log(">>[known="+c_export+" (ref)]>>");
  				if (DEBUG_THIS) console.log("->- DEFINE(",c_export,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_export = 0;
  			}
  			// console.log(">>[xref="+id+"]>>");
  			if (DEBUG_THIS) console.log("->- XREF(",id,"), j=",j);
  			op8.push( pack1b( PRIM_BULK_KNOWN_OP.XREF, false ) );
  			op16.push( pack2b( id & 0xFFFF, false ) );
  			encoder.counters.arr_dat+=3;
  			continue;
  		}
  
  		// Populate property table (for byval lookup)
  		propertyTable = getProps( object );
  		if (!propertyTable) {
  			throw new Errors.AssertError('Profile property encoder returned unexpected data!');
  		}
  
  		// Check ByVal ref
  		id = encoder.lookupIVal( propertyTable, eid );
  		if (id > -1) {
  			if (c_export > 0) {
  				// console.log(">>[known="+c_export+" (ref)]>>");
  				if (DEBUG_THIS) console.log("->- DEFINE(",c_export,"), j=",j);
  				op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) )  )
  				encoder.counters.arr_dat+=1;
  				c_export = 0;
  			}
  			// console.log(">>[iref="+id+" (val)]>>");
  			if (DEBUG_THIS) console.log("->- IREF(",id,"), j=",j);
  			encodeLIREF( encoder, op8, op16, local_ids, id );
  			encoder.counters.arr_dat+=3;
  			continue;
  		}
  
  		// Keep IREF
  		encoder.keepIRef( object, propertyTable, eid );
  		iref_count++;
  
  		// Init weave table if empty
  		if (plen === -1) {
  			plen = propertyTable.length;
  			for (i=0; i<plen; ++i) {
  				waveTable.push( [] );
  			}
  		}
  
  		// Populate the weave table for the actual encoding.
  		for (i=0; i<plen; ++i) {
  			waveTable[i].push( propertyTable[i] );
  		}
  
  		// Count how many objects are exported in a bulk,
  		// and flush every 64 items since that's how much
  		// we can fit in a single 8-bit command
  		c_export++;
  		if (c_export > 63) {
  			// console.log(">>[known="+c_export+" (bulk)]>>");
  			if (DEBUG_THIS) console.log("->- DEFINE(",c_export,"), j=",j);
  			op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) ) );
  			encoder.counters.arr_hdr+=1;
  			c_export = 0;
  		}
  
  	}
  
  	// Finalize pending op-codes
  	if (c_export > 0) {
  		// console.log(">>[known="+c_export+" (end)]>>");
  		if (DEBUG_THIS) console.log("->- DEFINE(",c_export,"), j=",j);
  		op8.push( pack1b( PRIM_BULK_KNOWN_OP.DEFINE | (c_export-1) ) );
  		encoder.counters.arr_hdr+=1;
  	}
  	if (c_same > 0) {
  		// console.log(">>[same="+c_same+"]>>");
  		if (DEBUG_THIS) console.log("->- REPEAT(",c_same,"), j=",j);
  		op8.push( pack1b( PRIM_BULK_KNOWN_OP.REPEAT | (c_same-1) )  )
  		encoder.counters.arr_dat+=1;
  	}
  
  
  	// Write number of iref items for faster initialization on decoder-side
  	if (data.length < UINT16_MAX) {
  		if (DEBUG_THIS) console.log("->- HINT16="+iref_count);
  		encoder.stream16.write( pack2b( iref_count, false ) );
  		encoder.counters.arr_hdr+=3;
  	} else { // 32-bit length prefix
  		if (DEBUG_THIS) console.log("->- HINT32="+iref_count);
  		encoder.stream32.write( pack4b( iref_count, false ) );
  		encoder.counters.arr_hdr+=5;
  	}
  
  	// Write weaved properties
  	if (iref_count && (plen === -1))
  		throw new Errors.AssertError("Something went really wrong in the logic!");
  	if (iref_count > 0) {
  		encodeArray( encoder, Array.prototype.concat.apply([], waveTable) );
  	}
  
  	// Write decoding instructions
  	encoder.stream8.writeMany( op8 );
  	encoder.stream16.writeMany( op16 );
  
  	// Close log group
  	encoder.logIndent(-1);
  	encoder.log(LOG.ARR, "]");
  
  }