code: protected function _massageBlockInput(&$in)
  	{
  		if (is_string($in)) {
  			$in          = json_decode($in);
  			$jsonLastErr = json_last_error();
  			if ($jsonLastErr !== JSON_ERROR_NONE) {
  				throw new InvalidArgumentException(
  					'invalid input type (string); tried as JSON: ' . json_last_error_msg(),
  					$jsonLastErr
  				);
  			}
  		}
  
  		switch (gettype($in)) {
  			case 'object':
  			case 'array':
  				break;
  
  			case 'null':
  			case 'NULL':
  				$in = [];
  				break;
  
  			case 'bool':
  			case 'boolean':
  				// A 'false' is returned by MySQL:PDO for "no results".
  				if (true !== $in) {
  					/** Change false to empty array. */
  					$in = [];
  				}
  			//	A boolean 'true' falls through.
  
  			default:
  				throw new InvalidArgumentException('bad input type ' . gettype($in) . ', value: "' . $in . '"');
  		}
  	}
docs: Check if the input data is good or needs to be massaged.
  
  Indexed arrays ARE COPIED BY POSITION starting with the first sudo-public
  property (property names not starting with an underscore). Extra values
  are ignored. Unused properties are unchanged.
  
  @param $in
  
  @throws InvalidArgumentException