class Word < Object

  int char_at(int index)
    int word_index = index - 1
    word_index = word_index >> 2
    word_index = word_index + 3
    int rest = index - 1
    rest = rest.mod4()
    int char = get_internal(word_index)
    int shifted = 8 * rest
    shifted = char >> shifted
    int ret = shifted & 255
    return ret
  end

  int set_length(int i)
    set_internal( 2 , i)
    return i
  end

  Word push_char(int char)
    int index = self.char_length + 1
    self.set_length(index)

    int word_index = index - 1
    word_index = word_index >> 2
    word_index = word_index + 3

    int rest = index - 1
    rest = rest.mod4()

    int shifted =  rest * 8
    shifted =  char << shifted

    int was = get_internal( word_index )
    int mask = rest * 8
    int const = 255 << 8
    const = const + 255
    const = const << 8
    const = const + 255
    const = const << 8
    const = const + 255

    mask = 255 << mask
    mask = const - mask

    int masked = was & mask
    int put = masked + shifted

    set_internal( word_index , put )

    return self
  end
end