class CharToken extends AbstractToken<Character> {

  private static final long serialVersionUID = -4529035977875919777L;
  private final char ch;
  private int startIndex;


  public char getCh() {
    return this.ch;
  }


  public CharToken(final char peek, final int lineNo, final int startIndex) {
    super(String.valueOf(peek), lineNo, startIndex);
    this.ch = peek;
  }


  @Override
  public com.googlecode.aviator.lexer.token.Token.TokenType getType() {
    return TokenType.Char;
  }


  @Override
  public Character getValue(final Map<String, Object> env) {
    return this.ch;
  }


  @Override
  public int hashCode() {
    final int prime = 31;
    int result = super.hashCode();
    result = prime * result + this.ch;
    result = prime * result + this.startIndex;
    return result;
  }


  @Override
  public boolean equals(final Object obj) {<FILL_FUNCTION_BODY>}

}

    if (this == obj) {
      return true;
    }
    if (!super.equals(obj)) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    CharToken other = (CharToken) obj;
    if (this.ch != other.ch) {
      return false;
    }
    if (this.startIndex != other.startIndex) {
      return false;
    }
    return true;
  
<methods>public void <init>(java.lang.String, int, int) ,public boolean equals(java.lang.Object) ,public int getEndIndex() ,public java.lang.String getLexeme() ,public int getLineNo() ,public V getMeta(java.lang.String, V) ,public V getMeta(java.lang.String) ,public Map<java.lang.String,java.lang.Object> getMetaMap() ,public int getStartIndex() ,public int hashCode() ,public void setMetaMap(Map<java.lang.String,java.lang.Object>) ,public java.lang.String toString() ,public Token<java.lang.Character> withMeta(java.lang.String, java.lang.Object) <variables>protected java.lang.String lexeme,private final non-sealed int lineIndex,private final non-sealed int lineNo,private Map<java.lang.String,java.lang.Object> metaMap,private static final long serialVersionUID