# Class SnippetEvent

java.lang.Object
jdk.jshell.SnippetEvent

public class SnippetEvent extends Object
A description of a change to a Snippet. These are generated by direct changes to state with `JShell.eval(String)` or `JShell.drop(Snippet)`, or indirectly by these same methods as dependencies change or Snippets are overwritten. For direct changes, the `causeSnippet()` is `null`.

`SnippetEvent` is immutable: an access to any of its methods will always return the same result. and thus is thread-safe.

Since:
  9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Snippet`
  `causeSnippet()`
  Either the snippet whose change caused this update or `null`.
  `JShellException`
  `exception()`
  An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.
  `boolean`
  `isSignatureChange()`
  Indicates whether the signature has changed.
  `Snippet.Status`
  `previousStatus()`
  The status before the transition.
  `Snippet`
  `snippet()`
  The Snippet which has changed
  `Snippet.Status`
  `status()`
  The after status.
  `String`
  `toString()`
  Return a string representation of the event
  `String`
  `value()`
  The result value of successful run.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Method Details

  - ### snippet

    public Snippet snippet()
    The Snippet which has changed
    Returns:
      the return the Snippet whose `Status` has changed.

  - ### previousStatus

    public Snippet.Status previousStatus()
    The status before the transition. If this event describes a Snippet creation return `NONEXISTENT`.
    Returns:
      the previousStatus

  - ### status

    public Snippet.Status status()
    The after status. Note: this may be the same as the previous status (not all changes cause a `Status` change.
    Returns:
      the status

  - ### isSignatureChange

    public boolean isSignatureChange()
    Indicates whether the signature has changed. Coming in or out of definition is always a signature change. An overwritten Snippet `(status == OVERWRITTEN)` is always `false` as responsibility for the definition has passed to the overwriting definition.
    Returns:
      `true` if the signature changed; otherwise `false`

  - ### causeSnippet

    public Snippet causeSnippet()
    Either the snippet whose change caused this update or `null`. This returns `null` if this change is the creation of a new Snippet via `eval` or it is the explicit drop of a Snippet with `drop`.
    Returns:
      the Snippet which caused this change or `null` if directly caused by an API action.

  - ### exception

    public JShellException exception()
    An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.
    Returns:
      the exception or `null`.

  - ### value

    public String value()
    The result value of successful run. The value is null if not executed or an exception was thrown.
    Returns:
      the value or `null`.

  - ### toString

    public String toString()
    Return a string representation of the event
    Overrides:
      `toString` in class `Object`
    Returns:
      a descriptive representation of the SnippetEvent