com.sun.source.tree

## Enum Tree.Kind

- java.lang.Object
- - java.lang.Enum<Tree.Kind>
  - - com.sun.source.tree.Tree.Kind

- All Implemented Interfaces:
    Serializable, Comparable<Tree.Kind>
  Enclosing interface:
    Tree

      public static enum Tree.Kind
      extends Enum<Tree.Kind>

  Enumerates all kinds of trees.

- - ### Enum Constant Summary

    Enum Constants
    Enum Constant and Description
    `AND` Used for instances of `BinaryTree` representing bitwise and logical "and" `&`.
    `AND_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing bitwise and logical "and" assignment `&=`.
    `ANNOTATION` Used for instances of `AnnotationTree`.
    `ANNOTATION_TYPE` Used for instances of `ClassTree` representing annotation types.
    `ARRAY_ACCESS` Used for instances of `ArrayAccessTree`.
    `ARRAY_TYPE` Used for instances of `ArrayTypeTree`.
    `ASSERT` Used for instances of `AssertTree`.
    `ASSIGNMENT` Used for instances of `AssignmentTree`.
    `BITWISE_COMPLEMENT` Used for instances of `UnaryTree` representing bitwise complement operator `~`.
    `BLOCK` Used for instances of `BlockTree`.
    `BOOLEAN_LITERAL` Used for instances of `LiteralTree` representing a boolean literal expression of type `boolean`.
    `BREAK` Used for instances of `BreakTree`.
    `CASE` Used for instances of `CaseTree`.
    `CATCH` Used for instances of `CatchTree`.
    `CHAR_LITERAL` Used for instances of `LiteralTree` representing a character literal expression of type `char`.
    `CLASS` Used for instances of `ClassTree` representing classes.
    `COMPILATION_UNIT` Used for instances of `CompilationUnitTree`.
    `CONDITIONAL_AND` Used for instances of `BinaryTree` representing conditional-and `&&`.
    `CONDITIONAL_EXPRESSION` Used for instances of `ConditionalExpressionTree`.
    `CONDITIONAL_OR` Used for instances of `BinaryTree` representing conditional-or `||`.
    `CONTINUE` Used for instances of `ContinueTree`.
    `DIVIDE` Used for instances of `BinaryTree` representing division `/`.
    `DIVIDE_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing division assignment `/=`.
    `DO_WHILE_LOOP` Used for instances of `DoWhileLoopTree`.
    `DOUBLE_LITERAL` Used for instances of `LiteralTree` representing a floating-point literal expression of type `double`.
    `EMPTY_STATEMENT` Used for instances of `EmptyStatementTree`.
    `ENHANCED_FOR_LOOP` Used for instances of `EnhancedForLoopTree`.
    `ENUM` Used for instances of `ClassTree` representing enums.
    `EQUAL_TO` Used for instances of `BinaryTree` representing equal-to `==`.
    `ERRONEOUS` Used for instances of `ErroneousTree`.
    `EXPRESSION_STATEMENT` Used for instances of `ExpressionStatementTree`.
    `EXTENDS_WILDCARD` Used for instances of `WildcardTree` representing an extends bounded wildcard type argument.
    `FLOAT_LITERAL` Used for instances of `LiteralTree` representing a floating-point literal expression of type `float`.
    `FOR_LOOP` Used for instances of `ForLoopTree`.
    `GREATER_THAN` Used for instances of `BinaryTree` representing greater-than `>`.
    `GREATER_THAN_EQUAL` Used for instances of `BinaryTree` representing greater-than-equal `>=`.
    `IDENTIFIER` Used for instances of `IdentifierTree`.
    `IF` Used for instances of `IfTree`.
    `IMPORT` Used for instances of `ImportTree`.
    `INSTANCE_OF` Used for instances of `InstanceOfTree`.
    `INT_LITERAL` Used for instances of `LiteralTree` representing an integral literal expression of type `int`.
    `INTERFACE` Used for instances of `ClassTree` representing interfaces.
    `LABELED_STATEMENT` Used for instances of `LabeledStatementTree`.
    `LEFT_SHIFT` Used for instances of `BinaryTree` representing left shift `<<`.
    `LEFT_SHIFT_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing left shift assignment `<<=`.
    `LESS_THAN` Used for instances of `BinaryTree` representing less-than `<`.
    `LESS_THAN_EQUAL` Used for instances of `BinaryTree` representing less-than-equal `<=`.
    `LOGICAL_COMPLEMENT` Used for instances of `UnaryTree` representing logical complement operator `!`.
    `LONG_LITERAL` Used for instances of `LiteralTree` representing an integral literal expression of type `long`.
    `MEMBER_SELECT` Used for instances of `MemberSelectTree`.
    `METHOD` Used for instances of `MethodTree`.
    `METHOD_INVOCATION` Used for instances of `MethodInvocationTree`.
    `MINUS` Used for instances of `BinaryTree` representing subtraction `-`.
    `MINUS_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing subtraction assignment `-=`.
    `MODIFIERS` Used for instances of `ModifiersTree`.
    `MULTIPLY` Used for instances of `BinaryTree` representing multiplication `*`.
    `MULTIPLY_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing multiplication assignment `*=`.
    `NEW_ARRAY` Used for instances of `NewArrayTree`.
    `NEW_CLASS` Used for instances of `NewClassTree`.
    `NOT_EQUAL_TO` Used for instances of `BinaryTree` representing not-equal-to `!=`.
    `NULL_LITERAL` Used for instances of `LiteralTree` representing the use of `null`.
    `OR` Used for instances of `BinaryTree` representing bitwise and logical "or" `|`.
    `OR_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing bitwise and logical "or" assignment `|=`.
    `OTHER` An implementation-reserved node.
    `PARAMETERIZED_TYPE` Used for instances of `ParameterizedTypeTree`.
    `PARENTHESIZED` Used for instances of `ParenthesizedTree`.
    `PLUS` Used for instances of `BinaryTree` representing addition or string concatenation `+`.
    `PLUS_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing addition or string concatenation assignment `+=`.
    `POSTFIX_DECREMENT` Used for instances of `UnaryTree` representing postfix decrement operator `--`.
    `POSTFIX_INCREMENT` Used for instances of `UnaryTree` representing postfix increment operator `++`.
    `PREFIX_DECREMENT` Used for instances of `UnaryTree` representing prefix decrement operator `--`.
    `PREFIX_INCREMENT` Used for instances of `UnaryTree` representing prefix increment operator `++`.
    `PRIMITIVE_TYPE` Used for instances of `PrimitiveTypeTree`.
    `REMAINDER` Used for instances of `BinaryTree` representing remainder `%`.
    `REMAINDER_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing remainder assignment `%=`.
    `RETURN` Used for instances of `ReturnTree`.
    `RIGHT_SHIFT` Used for instances of `BinaryTree` representing right shift `>>`.
    `RIGHT_SHIFT_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing right shift assignment `>>=`.
    `STRING_LITERAL` Used for instances of `LiteralTree` representing a string literal expression of type `String`.
    `SUPER_WILDCARD` Used for instances of `WildcardTree` representing a super bounded wildcard type argument.
    `SWITCH` Used for instances of `SwitchTree`.
    `SYNCHRONIZED` Used for instances of `SynchronizedTree`.
    `THROW` Used for instances of `ThrowTree`.
    `TRY` Used for instances of `TryTree`.
    `TYPE_CAST` Used for instances of `TypeCastTree`.
    `TYPE_PARAMETER` Used for instances of `TypeParameterTree`.
    `UNARY_MINUS` Used for instances of `UnaryTree` representing unary minus operator `-`.
    `UNARY_PLUS` Used for instances of `UnaryTree` representing unary plus operator `+`.
    `UNBOUNDED_WILDCARD` Used for instances of `WildcardTree` representing an unbounded wildcard type argument.
    `UNION_TYPE` Used for instances of `UnionTypeTree`.
    `UNSIGNED_RIGHT_SHIFT` Used for instances of `BinaryTree` representing unsigned right shift `>>>`.
    `UNSIGNED_RIGHT_SHIFT_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing unsigned right shift assignment `>>>=`.
    `VARIABLE` Used for instances of `VariableTree`.
    `WHILE_LOOP` Used for instances of `WhileLoopTree`.
    `XOR` Used for instances of `BinaryTree` representing bitwise and logical "xor" `^`.
    `XOR_ASSIGNMENT` Used for instances of `CompoundAssignmentTree` representing bitwise and logical "xor" assignment `^=`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Class<? extends Tree>` | `asInterface()`
    `static Tree.Kind` | `valueOf(String name)` Returns the enum constant of this type with the specified name.
    `static Tree.Kind[]` | `values()` Returns an array containing the constants of this enum type, in the order they are declared.

    - ### Methods inherited from class java.lang.Enum

      `clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Enum Constant Detail

    - #### ANNOTATION

          public static final Tree.Kind ANNOTATION

      Used for instances of `AnnotationTree`.

    - #### ARRAY_ACCESS

          public static final Tree.Kind ARRAY_ACCESS

      Used for instances of `ArrayAccessTree`.

    - #### ARRAY_TYPE

          public static final Tree.Kind ARRAY_TYPE

      Used for instances of `ArrayTypeTree`.

    - #### ASSERT

          public static final Tree.Kind ASSERT

      Used for instances of `AssertTree`.

    - #### ASSIGNMENT

          public static final Tree.Kind ASSIGNMENT

      Used for instances of `AssignmentTree`.

    - #### BLOCK

          public static final Tree.Kind BLOCK

      Used for instances of `BlockTree`.

    - #### BREAK

          public static final Tree.Kind BREAK

      Used for instances of `BreakTree`.

    - #### CASE

          public static final Tree.Kind CASE

      Used for instances of `CaseTree`.

    - #### CATCH

          public static final Tree.Kind CATCH

      Used for instances of `CatchTree`.

    - #### CLASS

          public static final Tree.Kind CLASS

      Used for instances of `ClassTree` representing classes.

    - #### COMPILATION_UNIT

          public static final Tree.Kind COMPILATION_UNIT

      Used for instances of `CompilationUnitTree`.

    - #### CONDITIONAL_EXPRESSION

          public static final Tree.Kind CONDITIONAL_EXPRESSION

      Used for instances of `ConditionalExpressionTree`.

    - #### CONTINUE

          public static final Tree.Kind CONTINUE

      Used for instances of `ContinueTree`.

    - #### DO_WHILE_LOOP

          public static final Tree.Kind DO_WHILE_LOOP

      Used for instances of `DoWhileLoopTree`.

    - #### ENHANCED_FOR_LOOP

          public static final Tree.Kind ENHANCED_FOR_LOOP

      Used for instances of `EnhancedForLoopTree`.

    - #### EXPRESSION_STATEMENT

          public static final Tree.Kind EXPRESSION_STATEMENT

      Used for instances of `ExpressionStatementTree`.

    - #### MEMBER_SELECT

          public static final Tree.Kind MEMBER_SELECT

      Used for instances of `MemberSelectTree`.

    - #### FOR_LOOP

          public static final Tree.Kind FOR_LOOP

      Used for instances of `ForLoopTree`.

    - #### IDENTIFIER

          public static final Tree.Kind IDENTIFIER

      Used for instances of `IdentifierTree`.

    - #### IF

          public static final Tree.Kind IF

      Used for instances of `IfTree`.

    - #### IMPORT

          public static final Tree.Kind IMPORT

      Used for instances of `ImportTree`.

    - #### INSTANCE_OF

          public static final Tree.Kind INSTANCE_OF

      Used for instances of `InstanceOfTree`.

    - #### LABELED_STATEMENT

          public static final Tree.Kind LABELED_STATEMENT

      Used for instances of `LabeledStatementTree`.

    - #### METHOD

          public static final Tree.Kind METHOD

      Used for instances of `MethodTree`.

    - #### METHOD_INVOCATION

          public static final Tree.Kind METHOD_INVOCATION

      Used for instances of `MethodInvocationTree`.

    - #### MODIFIERS

          public static final Tree.Kind MODIFIERS

      Used for instances of `ModifiersTree`.

    - #### NEW_ARRAY

          public static final Tree.Kind NEW_ARRAY

      Used for instances of `NewArrayTree`.

    - #### NEW_CLASS

          public static final Tree.Kind NEW_CLASS

      Used for instances of `NewClassTree`.

    - #### PARENTHESIZED

          public static final Tree.Kind PARENTHESIZED

      Used for instances of `ParenthesizedTree`.

    - #### PRIMITIVE_TYPE

          public static final Tree.Kind PRIMITIVE_TYPE

      Used for instances of `PrimitiveTypeTree`.

    - #### RETURN

          public static final Tree.Kind RETURN

      Used for instances of `ReturnTree`.

    - #### EMPTY_STATEMENT

          public static final Tree.Kind EMPTY_STATEMENT

      Used for instances of `EmptyStatementTree`.

    - #### SWITCH

          public static final Tree.Kind SWITCH

      Used for instances of `SwitchTree`.

    - #### SYNCHRONIZED

          public static final Tree.Kind SYNCHRONIZED

      Used for instances of `SynchronizedTree`.

    - #### THROW

          public static final Tree.Kind THROW

      Used for instances of `ThrowTree`.

    - #### TRY

          public static final Tree.Kind TRY

      Used for instances of `TryTree`.

    - #### PARAMETERIZED_TYPE

          public static final Tree.Kind PARAMETERIZED_TYPE

      Used for instances of `ParameterizedTypeTree`.

    - #### UNION_TYPE

          public static final Tree.Kind UNION_TYPE

      Used for instances of `UnionTypeTree`.

    - #### TYPE_CAST

          public static final Tree.Kind TYPE_CAST

      Used for instances of `TypeCastTree`.

    - #### TYPE_PARAMETER

          public static final Tree.Kind TYPE_PARAMETER

      Used for instances of `TypeParameterTree`.

    - #### VARIABLE

          public static final Tree.Kind VARIABLE

      Used for instances of `VariableTree`.

    - #### WHILE_LOOP

          public static final Tree.Kind WHILE_LOOP

      Used for instances of `WhileLoopTree`.

    - #### POSTFIX_INCREMENT

          public static final Tree.Kind POSTFIX_INCREMENT

      Used for instances of `UnaryTree` representing postfix increment operator `++`.

    - #### POSTFIX_DECREMENT

          public static final Tree.Kind POSTFIX_DECREMENT

      Used for instances of `UnaryTree` representing postfix decrement operator `--`.

    - #### PREFIX_INCREMENT

          public static final Tree.Kind PREFIX_INCREMENT

      Used for instances of `UnaryTree` representing prefix increment operator `++`.

    - #### PREFIX_DECREMENT

          public static final Tree.Kind PREFIX_DECREMENT

      Used for instances of `UnaryTree` representing prefix decrement operator `--`.

    - #### UNARY_PLUS

          public static final Tree.Kind UNARY_PLUS

      Used for instances of `UnaryTree` representing unary plus operator `+`.

    - #### UNARY_MINUS

          public static final Tree.Kind UNARY_MINUS

      Used for instances of `UnaryTree` representing unary minus operator `-`.

    - #### BITWISE_COMPLEMENT

          public static final Tree.Kind BITWISE_COMPLEMENT

      Used for instances of `UnaryTree` representing bitwise complement operator `~`.

    - #### LOGICAL_COMPLEMENT

          public static final Tree.Kind LOGICAL_COMPLEMENT

      Used for instances of `UnaryTree` representing logical complement operator `!`.

    - #### MULTIPLY

          public static final Tree.Kind MULTIPLY

      Used for instances of `BinaryTree` representing multiplication `*`.

    - #### DIVIDE

          public static final Tree.Kind DIVIDE

      Used for instances of `BinaryTree` representing division `/`.

    - #### REMAINDER

          public static final Tree.Kind REMAINDER

      Used for instances of `BinaryTree` representing remainder `%`.

    - #### PLUS

          public static final Tree.Kind PLUS

      Used for instances of `BinaryTree` representing addition or string concatenation `+`.

    - #### MINUS

          public static final Tree.Kind MINUS

      Used for instances of `BinaryTree` representing subtraction `-`.

    - #### LEFT_SHIFT

          public static final Tree.Kind LEFT_SHIFT

      Used for instances of `BinaryTree` representing left shift `<<`.

    - #### RIGHT_SHIFT

          public static final Tree.Kind RIGHT_SHIFT

      Used for instances of `BinaryTree` representing right shift `>>`.

    - #### UNSIGNED_RIGHT_SHIFT

          public static final Tree.Kind UNSIGNED_RIGHT_SHIFT

      Used for instances of `BinaryTree` representing unsigned right shift `>>>`.

    - #### LESS_THAN

          public static final Tree.Kind LESS_THAN

      Used for instances of `BinaryTree` representing less-than `<`.

    - #### GREATER_THAN

          public static final Tree.Kind GREATER_THAN

      Used for instances of `BinaryTree` representing greater-than `>`.

    - #### LESS_THAN_EQUAL

          public static final Tree.Kind LESS_THAN_EQUAL

      Used for instances of `BinaryTree` representing less-than-equal `<=`.

    - #### GREATER_THAN_EQUAL

          public static final Tree.Kind GREATER_THAN_EQUAL

      Used for instances of `BinaryTree` representing greater-than-equal `>=`.

    - #### EQUAL_TO

          public static final Tree.Kind EQUAL_TO

      Used for instances of `BinaryTree` representing equal-to `==`.

    - #### NOT_EQUAL_TO

          public static final Tree.Kind NOT_EQUAL_TO

      Used for instances of `BinaryTree` representing not-equal-to `!=`.

    - #### AND

          public static final Tree.Kind AND

      Used for instances of `BinaryTree` representing bitwise and logical "and" `&`.

    - #### XOR

          public static final Tree.Kind XOR

      Used for instances of `BinaryTree` representing bitwise and logical "xor" `^`.

    - #### OR

          public static final Tree.Kind OR

      Used for instances of `BinaryTree` representing bitwise and logical "or" `|`.

    - #### CONDITIONAL_AND

          public static final Tree.Kind CONDITIONAL_AND

      Used for instances of `BinaryTree` representing conditional-and `&&`.

    - #### CONDITIONAL_OR

          public static final Tree.Kind CONDITIONAL_OR

      Used for instances of `BinaryTree` representing conditional-or `||`.

    - #### MULTIPLY_ASSIGNMENT

          public static final Tree.Kind MULTIPLY_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing multiplication assignment `*=`.

    - #### DIVIDE_ASSIGNMENT

          public static final Tree.Kind DIVIDE_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing division assignment `/=`.

    - #### REMAINDER_ASSIGNMENT

          public static final Tree.Kind REMAINDER_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing remainder assignment `%=`.

    - #### PLUS_ASSIGNMENT

          public static final Tree.Kind PLUS_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing addition or string concatenation assignment `+=`.

    - #### MINUS_ASSIGNMENT

          public static final Tree.Kind MINUS_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing subtraction assignment `-=`.

    - #### LEFT_SHIFT_ASSIGNMENT

          public static final Tree.Kind LEFT_SHIFT_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing left shift assignment `<<=`.

    - #### RIGHT_SHIFT_ASSIGNMENT

          public static final Tree.Kind RIGHT_SHIFT_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing right shift assignment `>>=`.

    - #### UNSIGNED_RIGHT_SHIFT_ASSIGNMENT

          public static final Tree.Kind UNSIGNED_RIGHT_SHIFT_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing unsigned right shift assignment `>>>=`.

    - #### AND_ASSIGNMENT

          public static final Tree.Kind AND_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing bitwise and logical "and" assignment `&=`.

    - #### XOR_ASSIGNMENT

          public static final Tree.Kind XOR_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing bitwise and logical "xor" assignment `^=`.

    - #### OR_ASSIGNMENT

          public static final Tree.Kind OR_ASSIGNMENT

      Used for instances of `CompoundAssignmentTree` representing bitwise and logical "or" assignment `|=`.

    - #### INT_LITERAL

          public static final Tree.Kind INT_LITERAL

      Used for instances of `LiteralTree` representing an integral literal expression of type `int`.

    - #### LONG_LITERAL

          public static final Tree.Kind LONG_LITERAL

      Used for instances of `LiteralTree` representing an integral literal expression of type `long`.

    - #### FLOAT_LITERAL

          public static final Tree.Kind FLOAT_LITERAL

      Used for instances of `LiteralTree` representing a floating-point literal expression of type `float`.

    - #### DOUBLE_LITERAL

          public static final Tree.Kind DOUBLE_LITERAL

      Used for instances of `LiteralTree` representing a floating-point literal expression of type `double`.

    - #### BOOLEAN_LITERAL

          public static final Tree.Kind BOOLEAN_LITERAL

      Used for instances of `LiteralTree` representing a boolean literal expression of type `boolean`.

    - #### CHAR_LITERAL

          public static final Tree.Kind CHAR_LITERAL

      Used for instances of `LiteralTree` representing a character literal expression of type `char`.

    - #### STRING_LITERAL

          public static final Tree.Kind STRING_LITERAL

      Used for instances of `LiteralTree` representing a string literal expression of type `String`.

    - #### NULL_LITERAL

          public static final Tree.Kind NULL_LITERAL

      Used for instances of `LiteralTree` representing the use of `null`.

    - #### UNBOUNDED_WILDCARD

          public static final Tree.Kind UNBOUNDED_WILDCARD

      Used for instances of `WildcardTree` representing an unbounded wildcard type argument.

    - #### EXTENDS_WILDCARD

          public static final Tree.Kind EXTENDS_WILDCARD

      Used for instances of `WildcardTree` representing an extends bounded wildcard type argument.

    - #### SUPER_WILDCARD

          public static final Tree.Kind SUPER_WILDCARD

      Used for instances of `WildcardTree` representing a super bounded wildcard type argument.

    - #### ERRONEOUS

          public static final Tree.Kind ERRONEOUS

      Used for instances of `ErroneousTree`.

    - #### INTERFACE

          public static final Tree.Kind INTERFACE

      Used for instances of `ClassTree` representing interfaces.

    - #### ENUM

          public static final Tree.Kind ENUM

      Used for instances of `ClassTree` representing enums.

    - #### ANNOTATION_TYPE

          public static final Tree.Kind ANNOTATION_TYPE

      Used for instances of `ClassTree` representing annotation types.

    - #### OTHER

          public static final Tree.Kind OTHER

      An implementation-reserved node. This is the not the node you are looking for.

  - ### Method Detail

    - #### values

          public static Tree.Kind[] values()

      Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

          for (Tree.Kind c : Tree.Kind.values())
              System.out.println(c);

      Returns:
        an array containing the constants of this enum type, in the order they are declared

    - #### valueOf

          public static Tree.Kind valueOf(String name)

      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
        `name` - the name of the enum constant to be returned.
      Returns:
        the enum constant with the specified name
      Throws:
        `IllegalArgumentException` - if this enum type has no constant with the specified name
        `NullPointerException` - if the argument is null

    - #### asInterface

          public Class<? extends Tree> asInterface()

Copyright © 2005, 2015, Oracle and/or its affiliates. All rights reserved.