code: function parseTiePropertyParam(rawParam) {
  	if (!rawParam || typeof rawParam !== 'string') {
  		throw new Error('invalid tie value; found: "' + rawParam + '"; expected (example): "orders:0.address.street > textContent"');
  	}
  	let parts = rawParam.split(PARAM_SPLITTER),
  		origin,
  		rawPath;
  	if (parts.length !== 2 || !parts[1]) {
  		throw new Error('invalid tie value; found: "' + rawParam + '"; expected (example): "orders:0.address.street > textContent"');
  	}
  	origin = parts[0].split(':');
  	if (!origin.length || origin.length > 2 || !origin[0]) {
  		throw new Error('invalid tie value; found: "' + rawParam + '"; expected (example): "orders:0.address.street > textContent"');
  	}
  	rawPath = origin.length > 1 ? origin[1] : '';
  	return {
  		tieName: origin[0],
  		rawPath: rawPath,
  		path: rawPath.split('.').filter(node => node),
  		targetProperty: parts[1]
  	};
  }
docs: syntax example: data-tie="orders:0.address.street > textContent"