isIterable = subject isnt window and checkIf.isIterable(subject) and not subject.nodeType
sampleItem = if isIterable then subject[0] else subject

if not sampleItem
	throwError('emptyList') if isIterable and checkIf.isElCollection(subject)

else if @isDom = checkIf.isDom(sampleItem)

	if @property is 'checked'
		isDomRadio = sampleItem and checkIf.isDomRadio(sampleItem)
		isDomCheckbox = not isDomRadio and sampleItem and checkIf.isDomCheckbox(sampleItem)
	
	else if @property is 'value'
		isDomInput = checkIf.isDomInput(sampleItem)

	

	if isIterable and @descriptor isnt 'multi'
		if subject.length is 1
			subject = subject[0]

		else
			if (isDomRadio or isDomCheckbox) and not checkIf.domElsAreSame(subject)
				return throwWarning('mixedElList',3)
			
			else

				if isDomRadio or isDomCheckbox
					@isMultiChoice = true
					subject = [].slice.call(subject)
				else
					subject = subject[0]
					throwWarning('onlyOneDOMElement',3)