<?php
namespace Magento\Framework\Code\GeneratorTest\SourceClassWithNamespace;

/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
class Interceptor extends \Magento\Framework\Code\GeneratorTest\SourceClassWithNamespace implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct($param1 = '', $param2 = '\\', $param3 = '\'')
    {
        $this->___init();
        parent::__construct($param1, $param2, $param3);
    }

    /**
     * {@inheritdoc}
     */
    public function publicChildMethod(\Laminas\Code\Generator\ClassGenerator $classGenerator, $param1 = '', $param2 = '\\', $param3 = '\'', array $array = [])
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicChildMethod');
        return $pluginInfo ? $this->___callPlugins('publicChildMethod', func_get_args(), $pluginInfo) : parent::publicChildMethod($classGenerator, $param1, $param2, $param3, $array);
    }

    /**
     * {@inheritdoc}
     */
    public function publicMethodWithReference(\Laminas\Code\Generator\ClassGenerator &$classGenerator, &$param1, array &$array)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicMethodWithReference');
        return $pluginInfo ? $this->___callPlugins('publicMethodWithReference', func_get_args(), $pluginInfo) : parent::publicMethodWithReference($classGenerator, $param1, $array);
    }

    /**
     * {@inheritdoc}
     */
    public function publicChildWithoutParameters()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicChildWithoutParameters');
        return $pluginInfo ? $this->___callPlugins('publicChildWithoutParameters', func_get_args(), $pluginInfo) : parent::publicChildWithoutParameters();
    }

    /**
     * {@inheritdoc}
     */
    public function public71($arg1, string $arg2, ?int $arg3, ?int $arg4 = null) : void
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'public71');
        $pluginInfo ? $this->___callPlugins('public71', func_get_args(), $pluginInfo) : parent::public71($arg1, $arg2, $arg3, $arg4);
    }

    /**
     * {@inheritdoc}
     */
    public function public71Another(?\DateTime $arg1, $arg2 = false) : ?string
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'public71Another');
        return $pluginInfo ? $this->___callPlugins('public71Another', func_get_args(), $pluginInfo) : parent::public71Another($arg1, $arg2);
    }

    /**
     * {@inheritdoc}
     */
    public function publicWithSelf($arg = false) : \Magento\Framework\Code\GeneratorTest\SourceClassWithNamespace
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicWithSelf');
        return $pluginInfo ? $this->___callPlugins('publicWithSelf', func_get_args(), $pluginInfo) : parent::publicWithSelf($arg);
    }

    /**
     * {@inheritdoc}
     */
    public function publicParentMethod(\Laminas\Code\Generator\DocBlockGenerator $docBlockGenerator, $param1 = '', $param2 = '\\', $param3 = '\'', array $array = [])
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicParentMethod');
        return $pluginInfo ? $this->___callPlugins('publicParentMethod', func_get_args(), $pluginInfo) : parent::publicParentMethod($docBlockGenerator, $param1, $param2, $param3, $array);
    }

    /**
     * {@inheritdoc}
     */
    public function publicParentWithoutParameters()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'publicParentWithoutParameters');
        return $pluginInfo ? $this->___callPlugins('publicParentWithoutParameters', func_get_args(), $pluginInfo) : parent::publicParentWithoutParameters();
    }
}
