If key's type is Optional for some T, returns a key with the same qualifier whose type is plain RequestKinds#extractKeyType(RequestKind, TypeMirror) extracted} from T.
(Key key)
| 435 | * extracted} from {@code T}. |
| 436 | */ |
| 437 | Optional<Key> unwrapOptional(Key key) { |
| 438 | if (!OptionalType.isOptional(key)) { |
| 439 | return Optional.empty(); |
| 440 | } |
| 441 | |
| 442 | TypeMirror optionalValueType = OptionalType.from(key).valueType(); |
| 443 | return Optional.of( |
| 444 | key.toBuilder() |
| 445 | .type(extractKeyType(getRequestKind(optionalValueType), optionalValueType)) |
| 446 | .build()); |
| 447 | } |
| 448 | |
| 449 | /** Returns a key for a {@code @ForReleasableReferences(scope) ReleasableReferenceManager}. */ |
| 450 | Key forReleasableReferenceManager(Scope scope) { |
no test coverage detected