All except `GetAsDictionary()`. Please use new shiny methods instead.
https://chromium.googlesource.com/chromium/src/+/master/base/values.h
atom/common/native_mate_converters/v8_value_converter.cc
v8::String::kNormalString, val.length());
    }
    case base::Value::Type::LIST:
      return ToV8Array(isolate, static_cast<const base::ListValue*>(value));
    case base::Value::Type::DICTIONARY:
      return ToV8Object(isolate,
                        static_cast<const base::DictionaryValue*>(value));
    case base::Value::Type::BINARY:
      return ToArrayBuffer(isolate, static_cast<const base::Value*>(value));
    default:
      LOG(ERROR) << "Unexpected value type: " << value->type();
      return v8::Null(isolate);
  }
}
v8::Local<v8::Value> V8ValueConverter::ToV8Array(
    v8::Isolate* isolate,
    const base::ListValue* val) const {
  v8::Local<v8::Array> result(v8::Array::New(isolate, val->GetSize()));
  for (size_t i = 0; i < val->GetSize(); ++i) {
    const base::Value* child = nullptr;
    val->Get(i, &child);
    v8::Local<v8::Value> child_v8 = ToV8ValueImpl(isolate, child);
    v8::TryCatch try_catch(isolate);
    result->Set(static_cast<uint32_t>(i), child_v8);
    if (try_catch.HasCaught())
      LOG(ERROR) << "Setter for index " << i << " threw an exception.";
  }
  return result;
}
v8::Local<v8::Value> V8ValueConverter::ToV8Object(