class AfterJoinImpl<T7>
        extends BaseAfterJoin<T7, JoinBuilder8<T0, T1, T2, T3, T4, T5, T6, T7>>
        implements AfterJoin<T0, T1, T2, T3, T4, T5, T6, T7> {

        private AfterJoinImpl(StageBean<T7> stageBean) {
            super(JoinBuilder7Impl.this, stageBean, JoinBuilder8Impl::new);
        }

    }

    @Override
    @SuppressWarnings("unchecked")
    public <T> Join<T> build(Function7<T0, T1, T2, T3, T4, T5, T6, T> constructor) {<FILL_FUNCTION_BODY>

        requireNonNull(constructor);
        final List<Stage<?>> stages = stages();
        return streamSuppler().createJoin(
            stages,
            constructor,
            (TableIdentifier<T0>) stages.get(0).identifier(),
            (TableIdentifier<T1>) stages.get(1).identifier(),
            (TableIdentifier<T2>) stages.get(2).identifier(),
            (TableIdentifier<T3>) stages.get(3).identifier(),
            (TableIdentifier<T4>) stages.get(4).identifier(),
            (TableIdentifier<T5>) stages.get(5).identifier(),
            (TableIdentifier<T6>) stages.get(6).identifier()
        );
    
<methods>public JoinBuilder7<T0,T1,T2,T3,T4,T5,T6> where(Predicate<? super T6>) <variables>private static final com.speedment.common.logger.Logger LOGGER_JOIN,private final non-sealed StageBean<T6> stageBean,private final non-sealed List<StageBean<?>> stageBeans,private final non-sealed com.speedment.runtime.join.JoinStreamSupplierComponent streamSupplier