code: @Override
    public void bindScopeAnnotation(Class<? extends Annotation> scopeAnnotationClass) {
      checkIsAnnotationScope(scopeAnnotationClass);
      if (scopeAnnotationClass == Singleton.class) {
        throw new IllegalArgumentException(format("The annotation @Singleton is already bound "
            + "to the root scope of any scope. It can't be bound dynamically."));
      }
  
      scopeAnnotationClasses.add(scopeAnnotationClass);
    }
docs: Binds a {@code scopeAnnotationClass}, to the current scope. The current scope will accept all classes
  that are scoped using this {@code scopeAnnotationClass}.
  
  @param scopeAnnotationClass an annotation that should be qualified by {@link javax.inject.Scope}. If not,
  an exception is thrown.
  Note that the {@link Singleton} scope annotation class doesn't need to be bound, it's built-in.
  @see #getParentScope(Class)