Packages

trait Panic2[F[+_, +_]] extends Bracket2[F] with PanicSyntax

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Panic2
  2. PanicSyntax
  3. Bracket2
  4. Error2
  5. ErrorAccumulatingOps2
  6. Monad2
  7. ApplicativeError2
  8. Bifunctor2
  9. Guarantee2
  10. Applicative2
  11. Functor2
  12. RootBifunctor
  13. Root
  14. PredefinedHelper
  15. DivergenceHelper
  16. AnyRef
  17. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type Divergence = Nondivergent
    Definition Classes
    DivergenceHelper
  2. type IsPredefined = NotPredefined
    Definition Classes
    PredefinedHelper

Abstract Value Members

  1. abstract def bracketCase[E, A, B](acquire: F[E, A])(release: (A, Exit[E, B]) => F[Nothing, Unit])(use: (A) => F[E, B]): F[E, B]
    Definition Classes
    Bracket2
  2. abstract def bracketExcept[E, A, B](acquire: (RestoreInterruption2[F]) => F[E, A])(release: (A, Exit[E, B]) => F[Nothing, Unit])(use: (A) => F[E, B]): F[E, B]

    Like bracketCase, but acquire can contain marked interruptible regions as in uninterruptibleExcept

  3. abstract def catchAll[E, A, E2](r: F[E, A])(f: (E) => F[E2, A]): F[E2, A]
    Definition Classes
    Error2
  4. abstract def fail[E](v: => E): F[E, Nothing]
    Definition Classes
    ApplicativeError2
  5. abstract def flatMap[E, A, B](r: F[E, A])(f: (A) => F[E, B]): F[E, B]
    Definition Classes
    Monad2
  6. abstract def fromEither[E, V](effect: => Either[E, V]): F[E, V]
    Definition Classes
    ApplicativeError2
  7. abstract def fromOption[E, A](errorOnNone: => E)(effect: => Option[A]): F[E, A]
    Definition Classes
    ApplicativeError2
  8. abstract def fromTry[A](effect: => Try[A]): F[Throwable, A]
    Definition Classes
    ApplicativeError2
  9. abstract def pure[A](a: A): F[Nothing, A]
    Definition Classes
    Applicative2
  10. abstract def sandbox[E, A](r: F[E, A]): F[Failure[E], A]

    Note

    Will return either Exit.Error or Exit.Termination in the error channel. Exit.Interruption cannot be sandboxed. Use guaranteeOnInterrupt for cleanups on interruptions.

  11. abstract def sendInterruptToSelf: F[Nothing, Unit]

    Signal interruption to this fiber.

    Signal interruption to this fiber.

    This is _NOT_ the same as

    F.halt(Exit.Interrupted(Trace.forUnknownError))

    The code above exits with Exit.Interrupted failure *unconditionally*, whereas sendInterruptToSelf will not exit when in an uninterruptible region. Example:

    F.uninterruptible {
      F.halt(Exit.Interrupted(Trace.forUnknownError)) *>
      F.sync(println("Hello!")) // interrupted above. Hello _not_ printed
    }

    But with sendInterruptToSelf:

    F.uninterruptible {
      F.sendInterruptToSelf *>
      F.sync(println("Hello!")) // Hello IS printed.
    } *> F.sync(println("Impossible")) // interrupted immediately after `uninterruptible` block ends. Impossible _not_ printed
    See also

  12. abstract def terminate(v: => Throwable): F[Nothing, Nothing]
  13. abstract def uninterruptibleExcept[E, A](r: (RestoreInterruption2[F]) => F[E, A]): F[E, A]

    Designate the effect uninterruptible, with exception of regions in it that are specifically marked to restore previous interruptibility status using the provided RestoreInterruption function

    Designate the effect uninterruptible, with exception of regions in it that are specifically marked to restore previous interruptibility status using the provided RestoreInterruption function

    Example:
    1. F.uninterruptibleExcept {
        restoreInterruption =>
          val workLoop = {
            importantWorkThatMustNotBeInterrupted() *>
            log.info("Taking a break for a second, you can interrupt me while I wait!") *>
            restoreInterruption.apply {
              F.sleep(1.second)
               .guaranteeOnInterrupt(_ => log.info("Got interrupted!"))
            } *>
            log.info("No interruptions, going back to work!") *>
            workLoop
          }
      
          workLoop
      }
    Note

    Interruptibility status will be restored to what it was in the outer region, so if the outer region was also uninterruptible, the provided RestoreInterruption will have no effect. e.g. the expression F.uninterruptible { F.uninterruptibleExcept { restore => restore(F.sleep(1.second)) } is fully uninterruptible throughout

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def *>[E, A, B](f: F[E, A], next: => F[E, B]): F[E, B]

    execute two operations in order, return result of second operation

    execute two operations in order, return result of second operation

    Definition Classes
    Monad2Applicative2
  4. def <*[E, A, B](f: F[E, A], next: => F[E, B]): F[E, A]

    execute two operations in order, same as *>, but return result of first operation

    execute two operations in order, same as *>, but return result of first operation

    Definition Classes
    Monad2Applicative2
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. def InnerF: Functor2[F]
    Definition Classes
    ApplicativeError2Bifunctor2
  7. def accumulateErrorsImpl[ColL[_], ColR[x] <: IterableOnce[x], E, E1, A, B, B1, AC](col: ColR[A])(effect: (A) => F[E, B], onLeft: (E) => IterableOnce[E1], init: AC, onRight: (AC, B) => AC, end: (AC) => B1)(implicit buildL: Factory[E1, ColL[E1]]): F[ColL[E1], B1]
    Attributes
    protected[this]
    Definition Classes
    ErrorAccumulatingOps2
  8. def as[E, A, B](r: F[E, A])(v: => B): F[E, B]
    Definition Classes
    Functor2
  9. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  10. def attempt[E, A](r: F[E, A]): F[Nothing, Either[E, A]]
    Definition Classes
    Error2
  11. def bimap[E, A, E2, B](r: F[E, A])(f: (E) => E2, g: (A) => B): F[E2, B]
    Definition Classes
    Error2Bifunctor2
  12. def bracket[E, A, B](acquire: F[E, A])(release: (A) => F[Nothing, Unit])(use: (A) => F[E, B]): F[E, B]
    Definition Classes
    Bracket2
  13. final def bracketOnFailure[E, A, B](acquire: F[E, A])(cleanupOnFailure: (A, Failure[E]) => F[Nothing, Unit])(use: (A) => F[E, B]): F[E, B]

    Run release action only on a failure – _any failure_, INCLUDING interruption.

    Run release action only on a failure – _any failure_, INCLUDING interruption. Do not run release action if use finished successfully.

    Definition Classes
    Bracket2
  14. def catchSome[E, A, E1 >: E](r: F[E, A])(f: PartialFunction[E, F[E1, A]]): F[E1, A]
    Definition Classes
    Error2
  15. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  16. def collect[E, A, B](l: Iterable[A])(f: (A) => F[E, Option[B]]): F[E, List[B]]
    Definition Classes
    Applicative2
  17. def collectFirst[E, A, B](l: Iterable[A])(f: (A) => F[E, Option[B]]): F[E, Option[B]]
    Definition Classes
    Monad2
  18. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  20. def filter[E, A](l: Iterable[A])(f: (A) => F[E, Boolean]): F[E, List[A]]
    Definition Classes
    Applicative2
  21. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  22. def find[E, A](l: Iterable[A])(f: (A) => F[E, Boolean]): F[E, Option[A]]
    Definition Classes
    Monad2
  23. def flatSequence[E, A](l: Iterable[F[E, Iterable[A]]]): F[E, List[A]]
    Definition Classes
    Applicative2
  24. def flatSequenceAccumErrors[ColR[x] <: IterableOnce[x], ColIn[x] <: IterableOnce[x], ColL[_], E, A](col: ColR[F[ColL[E], ColIn[A]]])(implicit buildR: Factory[A, ColR[A]], buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], ColR[A]]

    flatSequence with error accumulation

    flatSequence with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  25. def flatTraverse[E, A, B](l: Iterable[A])(f: (A) => F[E, Iterable[B]]): F[E, List[B]]
    Definition Classes
    Applicative2
  26. def flatTraverseAccumErrors[ColR[x] <: IterableOnce[x], ColIn[x] <: IterableOnce[x], ColL[_], E, A, B](col: ColR[A])(f: (A) => F[ColL[E], ColIn[B]])(implicit buildR: Factory[B, ColR[B]], buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], ColR[B]]

    flatTraverse with error accumulation

    flatTraverse with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  27. def flatten[E, A](r: F[E, F[E, A]]): F[E, A]
    Definition Classes
    Monad2
  28. def flip[E, A](r: F[E, A]): F[A, E]
    Definition Classes
    Error2
  29. def foldLeft[E, A, AC](l: Iterable[A])(z: AC)(f: (AC, A) => F[E, AC]): F[E, AC]
    Definition Classes
    Monad2
  30. final def forever[E, A](r: F[E, A]): F[E, Nothing]
    Definition Classes
    Applicative2
    Annotations
    @inline()
  31. def fromOption[E, A](errorOnNone: => E, r: F[E, Option[A]]): F[E, A]

    Extracts the optional value or fails with the errorOnNone error

    Extracts the optional value or fails with the errorOnNone error

    Definition Classes
    Error2
  32. def fromOptionF[E, A](fallbackOnNone: => F[E, A], r: F[E, Option[A]]): F[E, A]

    Extracts the optional value, or executes the fallbackOnNone effect

    Extracts the optional value, or executes the fallbackOnNone effect

    Definition Classes
    Monad2
  33. def fromOptionOr[E, A](valueOnNone: => A, r: F[E, Option[A]]): F[E, A]

    Extracts the optional value, or returns the given valueOnNone value

    Extracts the optional value, or returns the given valueOnNone value

    Definition Classes
    Functor2
  34. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  35. def guarantee[E, A](f: F[E, A], cleanup: F[Nothing, Unit]): F[E, A]
    Definition Classes
    Bracket2Guarantee2
  36. def guaranteeCase[E, A](f: F[E, A], cleanup: (Exit[E, A]) => F[Nothing, Unit]): F[E, A]
    Definition Classes
    Bracket2
  37. final def guaranteeExceptOnInterrupt[E, A](f: F[E, A], cleanupOnNonInterruption: (Either[Termination, Either[Error[E], Success[A]]]) => F[Nothing, Unit]): F[E, A]

    Run cleanup on both _success_ and _failure_, if the failure IS NOT an interruption.

    Run cleanup on both _success_ and _failure_, if the failure IS NOT an interruption.

    Definition Classes
    Bracket2
  38. final def guaranteeOnFailure[E, A](f: F[E, A], cleanupOnFailure: (Failure[E]) => F[Nothing, Unit]): F[E, A]

    Run cleanup only on a failure – _any failure_, INCLUDING interruption.

    Run cleanup only on a failure – _any failure_, INCLUDING interruption. Do not run cleanup if use finished successfully.

    Definition Classes
    Bracket2
  39. final def guaranteeOnInterrupt[E, A](f: F[E, A], cleanupOnInterruption: (Interruption) => F[Nothing, Unit]): F[E, A]

    Run cleanup only on interruption.

    Run cleanup only on interruption. Do not run cleanup if use finished successfully.

    Definition Classes
    Bracket2
  40. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  41. final def ifThenElse[E, E1, A](cond: F[E, Boolean])(ifTrue: => F[E1, A], ifFalse: => F[E1, A])(implicit ev: <:<[E, E1]): F[E1, A]
    Definition Classes
    Monad2
    Annotations
    @inline()
  42. final def ifThenElse[E, A](cond: Boolean)(ifTrue: => F[E, A], ifFalse: => F[E, A]): F[E, A]
    Definition Classes
    Applicative2
    Annotations
    @inline()
  43. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  44. def iterateUntil[E, A](r: F[E, A])(p: (A) => Boolean): F[E, A]

    Execute an action repeatedly until its result satisfies the given predicate and return that result, discarding all others.

    Execute an action repeatedly until its result satisfies the given predicate and return that result, discarding all others.

    Definition Classes
    Monad2
  45. def iterateUntilF[E, A](init: A)(f: (A) => F[E, A])(p: (A) => Boolean): F[E, A]

    Apply an effectful function iteratively until its result satisfies the given predicate and return that result.

    Apply an effectful function iteratively until its result satisfies the given predicate and return that result.

    Definition Classes
    Monad2
  46. def iterateWhile[E, A](r: F[E, A])(p: (A) => Boolean): F[E, A]

    Execute an action repeatedly until its result fails to satisfy the given predicate and return that result, discarding all others.

    Execute an action repeatedly until its result fails to satisfy the given predicate and return that result, discarding all others.

    Definition Classes
    Monad2
  47. def iterateWhileF[E, A](init: A)(f: (A) => F[E, A])(p: (A) => Boolean): F[E, A]

    Apply an effectful function iteratively until its result fails to satisfy the given predicate and return that result.

    Apply an effectful function iteratively until its result fails to satisfy the given predicate and return that result.

    Definition Classes
    Monad2
  48. def leftFlatMap[E, A, E2](r: F[E, A])(f: (E) => F[Nothing, E2]): F[E2, A]
    Definition Classes
    Error2
  49. def leftMap[E, A, E2](r: F[E, A])(f: (E) => E2): F[E2, A]
    Definition Classes
    Bifunctor2
  50. def leftMap2[E, A, E2, E3](firstOp: F[E, A], secondOp: => F[E2, A])(f: (E, E2) => E3): F[E3, A]

    map errors from two operations into a new error if both fail

    map errors from two operations into a new error if both fail

    Definition Classes
    Error2ApplicativeError2
  51. def map[E, A, B](r: F[E, A])(f: (A) => B): F[E, B]
    Definition Classes
    Monad2Functor2
  52. def map2[E, A, B, C](r1: F[E, A], r2: => F[E, B])(f: (A, B) => C): F[E, C]

    execute two operations in order, map their results

    execute two operations in order, map their results

    Definition Classes
    Monad2Applicative2
  53. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  54. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  55. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  56. def orElse[E, A, E2](r: F[E, A], f: => F[E2, A]): F[E2, A]

    execute second operation only if the first one fails

    execute second operation only if the first one fails

    Definition Classes
    Error2ApplicativeError2
  57. final def orTerminate[A](r: F[Throwable, A]): F[Nothing, A]
    Annotations
    @inline()
  58. def partition[E, A](l: Iterable[F[E, A]]): F[Nothing, (List[E], List[A])]
    Definition Classes
    Error2
    Annotations
    @nowarn()
  59. def redeem[E, A, E2, B](r: F[E, A])(err: (E) => F[E2, B], succ: (A) => F[E2, B]): F[E2, B]
    Definition Classes
    Error2
  60. def redeemPure[E, A, B](r: F[E, A])(err: (E) => B, succ: (A) => B): F[Nothing, B]
    Definition Classes
    Error2
  61. def retryUntil[E, A](r: F[E, A])(f: (E) => Boolean): F[E, A]

    Retries this effect until its error satisfies the specified predicate.

    Retries this effect until its error satisfies the specified predicate.

    Definition Classes
    Error2
  62. def retryUntilF[E, A](r: F[E, A])(f: (E) => F[Nothing, Boolean]): F[E, A]

    Retries this effect until its error satisfies the specified effectful predicate.

    Retries this effect until its error satisfies the specified effectful predicate.

    Definition Classes
    Error2
  63. def retryWhile[E, A](r: F[E, A])(f: (E) => Boolean): F[E, A]

    Retries this effect while its error satisfies the specified predicate.

    Retries this effect while its error satisfies the specified predicate.

    Definition Classes
    Error2
  64. def retryWhileF[E, A](r: F[E, A])(f: (E) => F[Nothing, Boolean]): F[E, A]

    Retries this effect while its error satisfies the specified effectful predicate.

    Retries this effect while its error satisfies the specified effectful predicate.

    Definition Classes
    Error2
  65. final def sandboxExit[E, A](r: F[E, A]): F[Nothing, Exit[E, A]]

    Annotations
    @inline()
    Note

    Will return either Exit.Error or Exit.Termination. Exit.Interruption cannot be sandboxed. Use guaranteeOnInterrupt for cleanups on interruptions.

  66. def sequence[E, A](l: Iterable[F[E, A]]): F[E, List[A]]
    Definition Classes
    Applicative2
  67. def sequenceAccumErrors[ColR[x] <: IterableOnce[x], ColL[_], E, A](col: ColR[F[ColL[E], A]])(implicit buildR: Factory[A, ColR[A]], buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], ColR[A]]

    sequence with error accumulation

    sequence with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  68. def sequenceAccumErrorsNEList[ColR[x] <: IterableOnce[x], E, A](col: ColR[F[E, A]])(implicit buildR: Factory[A, ColR[A]]): F[NEList[E], ColR[A]]

    sequence with error accumulation

    sequence with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  69. def sequenceAccumErrors_[ColR[x] <: IterableOnce[x], ColL[_], E, A](col: ColR[F[ColL[E], A]])(implicit buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], Unit]

    sequence_ with error accumulation

    sequence_ with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  70. def sequence_[E](l: Iterable[F[E, Unit]]): F[E, Unit]
    Definition Classes
    Applicative2
  71. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  72. def tailRecM[E, A, B](a: A)(f: (A) => F[E, Either[A, B]]): F[E, B]
    Definition Classes
    Monad2
  73. def tap[E, A](r: F[E, A], f: (A) => F[E, Unit]): F[E, A]
    Definition Classes
    Monad2
  74. def tapBoth[E, A, E1 >: E](r: F[E, A])(err: (E) => F[E1, Unit], succ: (A) => F[E1, Unit]): F[E1, A]
    Definition Classes
    Error2
  75. def tapError[E, A, E1 >: E](r: F[E, A])(f: (E) => F[E1, Unit]): F[E1, A]
    Definition Classes
    Error2
  76. def toString(): String
    Definition Classes
    AnyRef → Any
  77. final def traverse[E, A, B](o: Option[A])(f: (A) => F[E, B]): F[E, Option[B]]
    Definition Classes
    Applicative2
    Annotations
    @inline()
  78. def traverse[E, A, B](l: Iterable[A])(f: (A) => F[E, B]): F[E, List[B]]
    Definition Classes
    Applicative2
  79. def traverseAccumErrors[ColR[x] <: IterableOnce[x], ColL[_], E, A, B](col: ColR[A])(f: (A) => F[ColL[E], B])(implicit buildR: Factory[B, ColR[B]], buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], ColR[B]]

    traverse with error accumulation

    traverse with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  80. def traverseAccumErrors_[ColR[x] <: IterableOnce[x], ColL[_], E, A](col: ColR[A])(f: (A) => F[ColL[E], Unit])(implicit buildL: Factory[E, ColL[E]], iterL: (ColL[E]) => IterableOnce[E]): F[ColL[E], Unit]

    traverse_ with error accumulation

    traverse_ with error accumulation

    Definition Classes
    ErrorAccumulatingOps2
  81. def traverse_[E, A](l: Iterable[A])(f: (A) => F[E, Unit]): F[E, Unit]
    Definition Classes
    Applicative2
  82. def uninterruptible[E, A](r: F[E, A]): F[E, A]
  83. def unit: F[Nothing, Unit]
    Definition Classes
    Applicative2
  84. final def unless[E, E1](cond: F[E, Boolean])(ifFalse: => F[E1, Unit])(implicit ev: <:<[E, E1]): F[E1, Unit]
    Definition Classes
    Monad2
    Annotations
    @inline()
  85. final def unless[E](cond: Boolean)(ifFalse: => F[E, Unit]): F[E, Unit]
    Definition Classes
    Applicative2
    Annotations
    @inline()
  86. def void[E, A](r: F[E, A]): F[E, Unit]
    Definition Classes
    Functor2
  87. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  88. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  89. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  90. final def when[E, E1](cond: F[E, Boolean])(ifTrue: => F[E1, Unit])(implicit ev: <:<[E, E1]): F[E1, Unit]
    Definition Classes
    Monad2
    Annotations
    @inline()
  91. final def when[E](cond: Boolean)(ifTrue: => F[E, Unit]): F[E, Unit]
    Definition Classes
    Applicative2
    Annotations
    @inline()
  92. final def widen[E, A, A1](r: F[E, A])(implicit ev: <:<[A, A1]): F[E, A1]
    Definition Classes
    Functor2
    Annotations
    @inline()
  93. final def widenBoth[E, A, E1, A1](r: F[E, A])(implicit ev: <:<[E, E1], ev2: <:<[A, A1]): F[E1, A1]
    Definition Classes
    Bifunctor2
    Annotations
    @inline()
  94. final def widenError[E, A, E1](r: F[E, A])(implicit ev: <:<[E, E1]): F[E1, A]
    Definition Classes
    Bifunctor2
    Annotations
    @inline()
  95. final def withFilter[E, A](r: F[E, A])(predicate: (A) => Boolean)(implicit filter: WithFilter[E], pos: SourceFilePositionMaterializer): F[E, A]

    for-comprehensions sugar:

    for-comprehensions sugar:

    for {
      (1, 2) <- F.pure((2, 1))
    } yield ()

    Use widenError to for pattern matching with non-Throwable errors:

    val f = for {
      (1, 2) <- F.pure((2, 1)).widenError[Option[Unit]]
    } yield ()
    // f: F[Option[Unit], Unit] = F.fail(Some(())
    Definition Classes
    Error2
    Annotations
    @inline()

Inherited from PanicSyntax

Inherited from Bracket2[F]

Inherited from Error2[F]

Inherited from ErrorAccumulatingOps2[F]

Inherited from Monad2[F]

Inherited from ApplicativeError2[F]

Inherited from Bifunctor2[F]

Inherited from Guarantee2[F]

Inherited from Applicative2[F]

Inherited from Functor2[F]

Inherited from RootBifunctor[F]

Inherited from Root

Inherited from PredefinedHelper

Inherited from DivergenceHelper

Inherited from AnyRef

Inherited from Any

Ungrouped