GraphQL-JS (the reference implementation) implements the values as an array of key->value. This is done in order to allow parsing things like: ```graphql field(arg: { f: true, f: false }) ``` And be able to have in the result `[ {key: "f", value: true}, {key: "f", value: false }]`. Today it's just `{ f: false}` in `graphql-parser`. Where a field can be specified multiple times. In terms of parsing, it should be better to use the array. The spec/graphql-js also implements a validation rule (`UniqueInputFieldNamesRule`) to strictly enforce the existence of only one field. Currently, this creates an ambiguity issue, since the consumer of the parsed `Value` is getting the "latest" value specific.