private function createAggregateChild(
        Child $meta,
        Str $nodeName,
        MapInterface $data,
        Query $query
    ): Query {
        $relationshipName = $nodeName
            ->append('_')
            ->append($meta->relationship()->property());
        $endNodeName = $relationshipName
            ->append('_')
            ->append($meta->relationship()->childProperty());
        $endNodeProperties = $this->buildProperties(
            $meta->properties(),
            $endNodeParamKey = $endNodeName->append('_props')
        );
        $relationshipProperties = $this->buildProperties(
            $meta->relationship()->properties(),
            $relationshipParamKey = $relationshipName->append('_props')
        );

        return $query
            ->create((string) $nodeName)
            ->linkedTo(
                (string) $endNodeName,
                $meta->labels()->toPrimitive()
            )
            ->withProperties($endNodeProperties->reduce(
                [],
                static function(array $carry, string $property, string $cypher): array {
                    $carry[$property] = $cypher;

                    return $carry;
                }
            ))
            ->withParameter(
                (string) $endNodeParamKey,
                $data
                    ->get($meta->relationship()->childProperty())
                    ->reduce(
                        [],
                        static function(array $carry, string $key, $value): array {
                            $carry[$key] = $value;

                            return $carry;
                        }
                    )
            )
            ->through(
                (string) $meta->relationship()->type(),
                (string) $relationshipName,
                'left'
            )
            ->withProperties($relationshipProperties->reduce(
                [],
                static function(array $carry, string $property, string $cypher): array {
                    $carry[$property] = $cypher;

                    return $carry;
                }
            ))
            ->withParameter(
                (string) $relationshipParamKey,
                $data
                    ->remove($meta->relationship()->childProperty())
                    ->reduce(
                        [],
                        static function(array $carry, string $key, $value): array {
                            $carry[$key] = $value;

                            return $carry;
                        }
                    )
            );
    }