А причем здесь сложная внутренняя логика?
Я вот смотрю описание методов:
  * `change` -- Method for a state change
  * `getState` -- Returns current state

И у меня возникает непонимание, почему у симметричных, судя по описанию, методов, такие разные названия?