public static function buildDefinition()
    {
        $definition = new Definition(
            new ClassName(EntityFake::getClassName()),
            new Definition\Identity("id")
        );

        $definition->setObserved([
            new Definition\Property("firstName"),
            new Definition\Property("lastName")
        ]);

        return $definition;
    }
    /**
     * @return Definition
     */
    public function createDefinition()
    {
        $definition = new Definition(
            new ClassName(EntityFake::getClassName()),
            [
                new LazyProperty(
                    new Name("items"),
                    new InitializerStub($this->itemsInitializerValue),
                    [new Method('getItems')]
                )
            ]
        );

        return $definition;
    }
    public static function buildDefinition($itemsInitializationResult = null)
    {
        $definition = new Definition(
            new ClassName(EntityFake::getClassName()),
            [
                new LazyProperty(
                    new Name("items"),
                    new InitializerStub($itemsInitializationResult),
                    [new Method('getItems')]
                )
            ]
        );

        return $definition;
    }