code: public function apply(Scope $scope, GenericList $arguments) {
  		//get index and value
  		if (is_null($this->property)) {
  			if (count($arguments) == 0) throw new \BadFunctionCallException("PropertyExists: No parameters found.");
  			$key = $arguments[0]->evaluate($scope);
  			
  			if (count($arguments) == 1) {
  				if (!array_key_exists(0, $scope->arguments)) throw new \BadFunctionCallException("PropertyExists: Expected value of type array/object as second parameter but none found.");
  				$value = $scope->arguments[0];
  			}
  			
  			else $value = $arguments[1]->evaluate($scope);
  		}
  		else {
  			$key = $this->property;
  			
  			if (count($arguments) == 0) {
  				if (!array_key_exists(0, $scope->arguments)) throw new \BadFunctionCallException("PropertyExists: Expected value of type array/object as first parameter but none found.");
  				$value = $scope->arguments[0];
  			}
  			
  			else $value = $arguments[0]->evaluate($scope);
  		}
  		
  		//get index/property
  		if (is_array($value)) return array_key_exists($key, $value);
  		elseif ($value instanceof \ArrayObject || $value instanceof \ArrayAccess) return $value->offsetExists($key);
  		elseif (is_object($value)) {
  			//check property existence
  			if (!property_exists($value, $key)) {
  				//check existence through __isset
  				if (method_exists($value, '__isset')) return $value->__isset($key);
  				return false;
  			}
  			
  			return true;
  		}
  		
  		throw new \InvalidArgumentException(sprintf("PropertyExists: Expected value of type array/object but %s found instead", gettype($value)));
  	}
docs: Checks if the given key/property is available in a array/object
  Usage: (#? 5 _array) (#? "name" _obj) (#name? _obj)
  Returns: boolean
  (non-PHPdoc)
  @see \eMacros\Applicable::apply()