private function methodProxy($method, $meta)
    {
        //Find out if the method is a property getter or setter
        $property = $meta->findProperty($method->getName());

        //If it is not, don't need the proxy
        if(!$property)
        {
            return;
        }

        //If the method is a straight up property setter/getter and not for a start/end node, you don't need a method proxy either.
        if($property->isProperty() && !$property->isStart() && !$property->isEnd())
        {
            return;
        }

        $parts = array();
        $arguments = array();

        //Loop through the methods parameters
        foreach ($method->getParameters() as $parameter)
        {
            //Convert to a variable name, and add it to parts array
            $variable = '$' . $parameter->getName();
            $parts[] = $variable;

            $arg = $variable;

            //If the parameter is optional, set it to its default value in the arguments list.
            if($parameter->isOptional())
            {
                $arg .= ' = ' . var_export($parameter->getDefaultValue(), true);
            }

            //If the variable is passed by reference, put in an ampersand
            if($parameter->isPassedByReference())
            {
                $arg = "& $arg";
            }

            //If the variable is a set class, add the class name as the type
            elseif($c = $parameter->getClass())
            {
                $arg = $c->getName() . ' ' . $arg;
            }

            //If the argument is a array, add array identifier
            if($parameter->isArray())
            {
                $arg = "array $arg";
            }

            //Add the argument to argument array
            $arguments[] = $arg;
        }

        //Join the argument variable names together with commas
        $parts = implode(', ', $parts);

        //Join the arguments with commas
        $arguments = implode(', ', $arguments);

        //Get the method name as a string
        $name = var_export($method->getName(), true);

        //Get the property name as a string
        $propertyName = var_export($property->getName(), true);

        return <<<FUNC

    function {$method->getName()}($arguments)
    {
        self::__load($name, $propertyName);
        return parent::{$method->getName()}($parts);
    }

FUNC;
    }