public function claimUsedFields(array $fieldNames, $objectContainer, array $options=[]) {
		$options = array_merge(self::$defaults, $options);
		
		foreach ($fieldNames as $fieldName) {
			if (isset($this->usedFields[$fieldName]) === false) {
				$this->usedFields[$fieldName] = $objectContainer;
				continue;
			}
			if ($this->usedFields[$fieldName] === $objectContainer) {
				continue;
			}
			
			/**
			 * @note this is not allowed by the specification
			 */
			if ($this->usedFields[$fieldName] === Validator::OBJECT_CONTAINER_TYPE && $options['enforceTypeFieldNamespace'] === false) {
				continue;
			}
			
			throw new DuplicateException('field name "'.$fieldName.'" already in use at "data.'.$this->usedFields[$fieldName].'"');
		}
	}