docs: function resolvePropPointer(recordTypeDesc, propPointer, noDash, ptrUse) {
  
  	// parse the pointer
  	const ptr = pointers.parse(recordTypeDesc, propPointer, noDash);
  
  	// check if top pointer
  	if (ptr.isRoot())
  		throw new common.X2SyntaxError(
  			'Patch operations involving top records as a whole are not' +
  				' allowed.');
  
  	// check the use
  	if (ptrUse === PTRUSE.SET) {
  		if (!ptr.propDesc.modifiable)
  			throw new common.X2SyntaxError(
  				`May not update non-modifiable property ${ptr.propPath}.`);
  	} else if (ptrUse === PTRUSE.ERASE) {
  		if ((ptr.propDesc.isScalar() || !ptr.collectionElement) &&
  			!ptr.propDesc.optional)
  			throw new common.X2SyntaxError(
  				`May not remove a required property ${ptr.propPath}.`);
  	}
  
  	// return the resolved pointer
  	return ptr;
  }