code: func MergeBinary(bjs []BinaryJSON) BinaryJSON {
  	var remain = bjs
  	var objects []BinaryJSON
  	var results []BinaryJSON
  	for len(remain) > 0 {
  		if remain[0].TypeCode != TypeCodeObject {
  			results = append(results, remain[0])
  			remain = remain[1:]
  		} else {
  			objects, remain = getAdjacentObjects(remain)
  			results = append(results, mergeBinaryObject(objects))
  		}
  	}
  	if len(results) == 1 {
  		return results[0]
  	}
  	return mergeBinaryArray(results)
  }
docs: // MergeBinary merges multiple BinaryJSON into one according the following rules:
  // 1) adjacent arrays are merged to a single array;
  // 2) adjacent object are merged to a single object;
  // 3) a scalar value is autowrapped as an array before merge;
  // 4) an adjacent array and object are merged by autowrapping the object as an array.