anchor.diff:        '>' { $t = cql3::cql3_type::raw::tuple(std::move(types)); }
       ;
   
  -username
  -    : IDENT
  -    | STRING_LITERAL
  +username returns [sstring str]
  +    : t=IDENT { $str = $t.text; }
  +    | t=STRING_LITERAL { $str = $t.text; }
  +    | s=unreserved_keyword { $str = s; }
       | QUOTED_NAME { add_recognition_error("Quoted strings are not supported for user names"); }
       ;
   
  
positive.code:     @init {
          cql3::role_options opts;
      }
      : K_ALTER K_USER username
        ( K_WITH K_PASSWORD v=STRING_LITERAL { opts.password = $v.text; })?
        ( K_SUPERUSER { opts.is_superuser = true; } | K_NOSUPERUSER { opts.is_superuser = false; } )?
        { $stmt = ::make_shared<alter_role_statement>(cql3::role_name($username.text, cql3::preserve_role_case::yes), std::move(opts)); }
      ;
  
  /**
  
negative.code: 
          bool ifNotExists = false;
      }
      : K_CREATE K_USER (K_IF K_NOT K_EXISTS { ifNotExists = true; })? u=username
        ( K_WITH K_PASSWORD v=STRING_LITERAL { opts.password = $v.text; })?
        ( K_SUPERUSER { opts.is_superuser = true; } | K_NOSUPERUSER { opts.is_superuser = false; } )?
        { $stmt = ::make_shared<create_role_statement>(cql3::role_name(u, cql3::preserve_role_case::yes), std::move(opts), ifNotExists); }
      ;
  
  /**
  