src/Weaver/ImplementWeaveGenerator.php
function addSourceMethods() {
        $methodBindingArray = $this->implementWeaveInfo->getMethodBindingArray();
        $methods = $this->sourceClassReflection->getMethods();
        foreach ($methods as $sourceMethod) {
            
            if ($sourceMethod->getName() === '__construct') {
                continue;
            }
            
            $methodBindingToApply = null;
            foreach ($methodBindingArray as $methodBinding) {
                if ($methodBinding->matchesMethod($sourceMethod->getName()) ) {
                    $methodBindingToApply = $methodBinding;
                    break;
                }
            }

            if ($methodBindingToApply != null) {
                $decoratorMethod = $methodBindingToApply->getMethod();
                $decoratorMethodReflection = $this->decoratorReflection->getMethod($decoratorMethod);
                $this->addDecoratedMethod($sourceMethod, $decoratorMethodReflection);
            }
            else {
                $this->addPlainMethod($sourceMethod);
            }
        }
    }
function addSourceMethods() {
        $methodBindingArray = $this->implementWeaveInfo->getMethodBindingArray();
        $methods = $this->sourceClassReflection->getMethods();
        foreach ($methods as $sourceMethod) {
            
            if ($sourceMethod->getName() === '__construct') {
                continue;
            }
            
            $methodBindingToApply = null;
            foreach ($methodBindingArray as $methodBinding) {
                if ($methodBinding->matchesMethod($sourceMethod->getName()) ) {
                    $methodBindingToApply = $methodBinding;
                    break;
                }
            }

            if ($methodBindingToApply != null) {
                $decoratorMethod = $methodBindingToApply->getMethod();
                $decoratorMethodReflection = $this->decoratorReflection->getMethod($decoratorMethod);
                $this->addDecoratedMethod($sourceMethod, $decoratorMethodReflection);
            }
            else {
                $this->addPlainMethod($sourceMethod);
            }
        }
    }
function addSourceMethods ( ) { $ methodBindingArray = $ this -> implementWeaveInfo -> getMethodBindingArray ( ) ; $ methods = $ this -> sourceClassReflection -> getMethods ( ) ; foreach ( $ methods as $ sourceMethod ) { if ( $ sourceMethod -> getName ( ) === '__construct' ) { continue ; } $ methodBindingToApply = null ; foreach ( $ methodBindingArray as $ methodBinding ) { if ( $ methodBinding -> matchesMethod ( $ sourceMethod -> getName ( ) ) ) { $ methodBindingToApply = $ methodBinding ; break ; } } if ( $ methodBindingToApply != null ) { $ decoratorMethod = $ methodBindingToApply -> getMethod ( ) ; $ decoratorMethodReflection = $ this -> decoratorReflection -> getMethod ( $ decoratorMethod ) ; $ this -> addDecoratedMethod ( $ sourceMethod , $ decoratorMethodReflection ) ; } else { $ this -> addPlainMethod ( $ sourceMethod ) ; } } }
For all of the methods  in that need to be decorated, generate the decorated version
and all the to the generator.
@TODO Shouldn't this only implement the methods in the interface that is being exposed?
For all of the methods in that need to be decorated generate the decorated version and all the to the generator .