class SessionScopeModule extends AbstractModule {
    private final SessionScope scope;

    @Inject
    public SessionScopeModule() {
        this(new SessionScope());
    }

    public SessionScopeModule(SessionScope scope) {
        this.scope = scope;
    }

    @Override
    protected void configure() {<FILL_FUNCTION_BODY>}
}

        bindScope(SessionScoped.class, scope);
        // bindScope(org.apache.maven.api.di.SessionScoped.class, scope);
        bind(SessionScope.class).toInstance(scope);

        bind(MavenSession.class)
                .toProvider(SessionScope.seededKeyProvider(MavenSession.class))
                .in(scope);
        bind(Session.class)
                .toProvider(SessionScope.seededKeyProvider(Session.class))
                .in(scope);
        bind(InternalMavenSession.class)
                .toProvider(SessionScope.seededKeyProvider(InternalMavenSession.class))
                .in(scope);
    
<no_super_class>