code: public static function valueFromASTUntyped($valueNode, ?array $variables = null)
      {
          switch (true) {
              case $valueNode instanceof NullValueNode:
                  return null;
              case $valueNode instanceof IntValueNode:
                  return intval($valueNode->value, 10);
              case $valueNode instanceof FloatValueNode:
                  return floatval($valueNode->value);
              case $valueNode instanceof StringValueNode:
              case $valueNode instanceof EnumValueNode:
              case $valueNode instanceof BooleanValueNode:
                  return $valueNode->value;
              case $valueNode instanceof ListValueNode:
                  return array_map(
                      static function ($node) use ($variables) {
                          return self::valueFromASTUntyped($node, $variables);
                      },
                      iterator_to_array($valueNode->values)
                  );
              case $valueNode instanceof ObjectValueNode:
                  return array_combine(
                      array_map(
                          static function ($field) {
                              return $field->name->value;
                          },
                          iterator_to_array($valueNode->fields)
                      ),
                      array_map(
                          static function ($field) use ($variables) {
                              return self::valueFromASTUntyped($field->value, $variables);
                          },
                          iterator_to_array($valueNode->fields)
                      )
                  );
              case $valueNode instanceof VariableNode:
                  $variableName = $valueNode->name->value;
  
                  return $variables && isset($variables[$variableName])
                      ? $variables[$variableName]
                      : null;
          }
  
          throw new Error('Unexpected value kind: ' . $valueNode->kind . '.');
      }
docs: Produces a PHP value given a GraphQL Value AST.
  
  Unlike `valueFromAST()`, no type is provided. The resulting PHP value
  will reflect the provided GraphQL value AST.
  
  | GraphQL Value        | PHP Value     |
  | -------------------- | ------------- |
  | Input Object         | Assoc Array   |
  | List                 | Array         |
  | Boolean              | Boolean       |
  | String               | String        |
  | Int / Float          | Int / Float   |
  | Enum                 | Mixed         |
  | Null                 | null          |
  
  @param Node         $valueNode
  @param mixed[]|null $variables
  
  @return mixed
  
  @throws Exception
  
  @api