private Optional(T value) { this.value = Objects.requireNonNull(value); } public static Optional of(T value) { return new Optional(value); } public static Optional ofNullable(T value) { return value == null ? empty() : of(value); } public T get() { if (value == null) { throw new NoSuchElementException("No value present"); } return value; } public T orElse(T other) { return value != null ? value : other; } public Optional map(Function