code: @SuppressWarnings("unchecked")
          public final <B> Option<B> map(final Function<? super T, ? extends B> mapper) {
              return isDefined() ? of(mapper.apply(get())) : NONE;
          }
docs: If a value is present, apply the provided mapping function to it,
  and if the result is non-null, return an {@code Option} describing
  the result. Otherwise return {@link #NONE}.
  
  @param mapper
  a mapping function to apply to the value, if present
  @param <B>
  The type of the result of the mapping function
  @return an Optional describing the result of applying a mapping
  function to the value of this {@code Option}, if a value is
  present, otherwise {@link #NONE}
  @throws NullPointerException
  if the mapper function is {@code null}
  @since 0.2