Constructor
@param ExprNode $owner
@param IContextProvider $provider
@param array $dataPool object[]
341952
public static function fromOwner( $owner, $provider, $dataPool )
	{
		$result = new ExprIterator();
		$result->nodes = $owner->toArray();
		$result->provider = $provider;
		$result->dataPool = $dataPool;
		return $result;
	}
690273
public function Execute( $provider, $dataPool )
	{
		$args = array();
		for ( $k = 0; $k < $this->getCount(); $k++)
			$args[ $k ] = ValueProxy::Unwrap( $this->getAbstractNode( $k )->Execute( $provider, $dataPool ) );
		return $this->_func->Invoke( $this->getContext(), $provider, $args );
	}
119641
public function MoveNext( $provider, $dataPool, $curr, &$res )
	{
		if ( ! $curr instanceof XPathItem || $curr->getIsNode() )
			$this->_varRef->Set( $dataPool, $curr );
		else
			// BMS 2018-03-02 Don't think it is necessary to convert the XPath2Item
			//				  to its type at this stage becaUse of the changed made
			//				  to handle XPath2Item more natively
			$this->_varRef->Set( $dataPool, $curr /* ->getTypedValue() */ );

		$res = $this->getAbstractNode(1)->Execute( $provider, $dataPool );
		if ( ! $res instanceof Undefined )
			return true;
		return false;
	}
577169
private function createNewDataProvider($provider, PhpNamespace $namespace): ClassType
    {
        $dataProvider = $namespace->addClass($provider . 'DataProvider');
        $dataProvider
            ->setFinal()
            ->setExtends($this->dataProviderExtends)
            ->setImplements(
                [
                    DataProviderInterface::class
                ]
            )
            ->setComment('Auto generated data provider')
        ;

        return $dataProvider;
    }
776928
public function Execute( $provider, $dataPool )
	{
		$value = CoreFuncs::Atomize( $this->getAbstractNode(0)->Execute( $provider, $dataPool ) );
		if ( ! $value instanceof Undefined )
			return call_user_func( $this->_unaryOper, $provider, $value );
		return Undefined::getValue();
	}
1097255
public function withOwner($owner, callable $callback, $args = [])
    {
        try {
            $this->setOwner($owner);
            return $callback(...$args);
        } finally {
            $this->clearOwner();
        }
    }
1139524
public function Execute($provider, $dataPool)
	{
		/**
		 * @var XPathNavigator $value1
		 * @var XPathNavigator $value2
		 */
		$value1 = CoreFuncs::NodeValue( $this->getAbstractNode(0)->Execute( $provider, $dataPool ), false );
		if ( ! is_null( $value1 ) )
		{
			$value2 = CoreFuncs::NodeValue( $this->getAbstractNode(1)->Execute( $provider, $dataPool ), false );
			if ( ! is_null( $value2 ) )
				return call_user_func( $this->_binaryOper, $provider, $value1, $value2 );
				// return $this->_binaryOper( $provider, $value1, $value2 );
		}
		return Undefined::getValue();
	}
234102
public function Execute( $provider, $dataPool )
	{
		if ( CoreFuncs::BooleanValue( $this->getAbstractNode(0)->Execute( $provider, $dataPool ) ) instanceof TrueValue &&
			 CoreFuncs::BooleanValue( $this->getAbstractNode(1)->Execute( $provider, $dataPool ) ) instanceof TrueValue )
			return CoreFuncs::$True;
		return CoreFuncs::$False;
	}
892381
public function Execute( $provider, $dataPool )
	{
		try
		{
			$value = CoreFuncs::CastToNumber1( $this->getContext(), CoreFuncs::Atomize( $this->getAbstractNode(0)->Execute( $provider, $dataPool ) ) );
			if ( ! $value instanceof Undefined )
				return call_user_func( $this->_unaryOper, $provider, $value );
			return Undefined::getValue();
		}
		catch ( DivideByZeroException $ex )
		{
			throw XPath2Exception::withErrorCode( "", $ex->getMessage(), $ex );
		}
		catch (\OverflowException $ex)
		{
			throw XPath2Exception::withErrorCode( "", $ex->getMessage(), $ex );
		}
	}
398496
public function registerDataProvider($id, $provider, $interface, $compatibilities, $listeners)
    {
        foreach ($compatibilities as $compatibility) {
            $this->providersByCompatibility[$provider][$compatibility['title']][$compatibility['gamemode']][$compatibility['script']] = $id;
        }

        $this->providerListeners[$id] = [];
        foreach ($listeners as $eventName => $method) {
            $this->providerListeners[$id][] = new ProviderListener($eventName, $provider, $method);
        }
        $this->providerInterfaces[$provider] = $interface;
        $this->providerById[$id] = $provider;
    }
636465
public function calculate(GeoDataProvider $provider, $date, array $inputValues = [])
    {
        $this->resetData();
        $fields = array_keys($this->fields);
        foreach ($fields as $field) {
            $this->calculateField($provider, $field, $date, $inputValues);
        }
        return $this->fields;
    }
719054
protected function createResourcesFromJsonData(array $data, ResponseInterface $response, ApiResourceInterface $owner)
    {
        $items = [];
        $className = $this->resourceClass();

        foreach ($data as $item) {
            $items[] = new $className($owner->getApi(), $item, $owner);
        }

        return $items;
    }
226009
public function viewAction($owner, $ownerId)
    {
        /** @var BlockProviderInterface $provider */
        $provider = $this->get('opifer.content.block_provider_pool')->getProvider($owner);
        $object = $provider->getBlockOwner($ownerId);

        /** @var Environment $environment */
        $environment = $this->get('opifer.content.block_environment');
        $environment->setDraft(true)->setObject($object);
        $environment->setBlockMode('manage');

        return $this->render($environment->getView(), $environment->getViewParameters());
    }
50752
public static function fromParts( $context, $node, $dataPool, $baseIter )
	{
		$result = new ExprNodeIterator();
		$result->fromExprNodeIteratorParts( $context, $node, $dataPool, $baseIter );
		return $result;
	}
46550
function bindWith(iContextStream $context)
    {
        $wrapperName = strtolower($context->getWrapperName());
        $this->bindContexts[$wrapperName] = $context;
        return $this;
    }
669311
public function addProvider($provider) {
        $this->validateProvider($provider);

        if (is_object($provider)) {
            $class = get_class($provider);
            $instance = $provider;
        } else {
            $class = $provider;
            $instance = null;
        }

        if ( ! array_has($this->providers, $class)) {
            $this->providers[$class] = [
                'instance' => $instance,
                'tags' => [],
            ];
        }
    }
760649
public function createToken($owner, $client, array $scopes = []): AccessToken
    {
        if (empty($scopes)) {
            $scopes = $this->scopeService->getDefaultScopes();
        } else {
            $this->validateTokenScopes($scopes);
        }

        do {
            $token = AccessToken::createNewAccessToken(
                $this->serverOptions->getAccessTokenTtl(),
                $owner,
                $client,
                $scopes
            );
        } while ($this->tokenRepository->tokenExists($token->getToken()));

        return $this->tokenRepository->save($token);
    }