code: func typeFromAST(schema Schema, inputTypeAST ast.Type) (Type, error) {
  	switch inputTypeAST := inputTypeAST.(type) {
  	case *ast.List:
  		innerType, err := typeFromAST(schema, inputTypeAST.Type)
  		if err != nil {
  			return nil, err
  		}
  		return NewList(innerType), nil
  	case *ast.NonNull:
  		innerType, err := typeFromAST(schema, inputTypeAST.Type)
  		if err != nil {
  			return nil, err
  		}
  		return NewNonNull(innerType), nil
  	case *ast.Named:
  		nameValue := ""
  		if inputTypeAST.Name != nil {
  			nameValue = inputTypeAST.Name.Value
  		}
  		ttype := schema.Type(nameValue)
  		return ttype, nil
  	default:
  		return nil, invariant(inputTypeAST.GetKind() == kinds.Named, "Must be a named type.")
  	}
  }
docs: // graphql-js/src/utilities.js`
  // TODO: figure out where to organize utils
  // TODO: change to *Schema