extend from AbstractToken