// 
public class VideoOptionScreen : OptionScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - menu : VerticalMenu
  Methods:
    // 
    + VideoOptionScreen  (Core.Game game)
    // 
    + Activate  (GameTime gameTime)
    // 
    + DrawMenu  (GameTime gameTime)
    + Initialize ()
    // 
    + UpdateMenu  (GameTime gameTime)
    // 
    + Collapse  (MenuItem item)

// 
public class OptionScreen : MenuScreen
  Attributes:
    // 
    - menu : VerticalMenu
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + OptionScreen  (Core.Game game)
    // 
    + Initialize  () override
    // 
    + UpdateMenu  (GameTime gameTime) override
    // 
    + DrawMenu  (GameTime gameTime) override
    // 
    + Activate  (GameTime gameTime) override

// 
public abstract class MenuScreen : GameState
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
  Methods:
    // 
    + MenuScreen  (Core.Game game)
    // 
    + Initialize  () override
    // 
    + Update  (GameTime gameTime) override
    // 
    + UpdateMenu  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) override
    // 
    + DrawMenu  (GameTime gameTime) abstract
    // 
    + Activate  (GameTime gameTime) override
    // 
    + Unload  () override
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color

// 
public abstract class GameState : 
  Attributes:
    // 
    + game : Game
    // 
    + NextState : GameState
    // 
    + input : Input
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameState  (Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + Deactivate  (GameTime gameTime) virtual

// 
public abstract class GameState : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameState
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + game : Game
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : Input
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime gameTime) abstract
    + Initialize () abstract
    + Unload () abstract
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + GameState  (Game game)
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Deactivate  (GameTime gameTime) virtual
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)

// 
public abstract class MenuScreen : GameState
  Attributes:
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + MenuScreen  (Core.Game game)
    // 
    + Activate  (GameTime gameTime)
    // 
    + Draw  (GameTime gameTime)
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color
    // 
    + DrawMenu  (GameTime gameTime) abstract
    // 
    + UpdateMenu  (GameTime gameTime) abstract
    + Initialize ()
    + Unload ()
    // 
    + Update  (GameTime gameTime)

// 
public abstract class GameState : 
  Attributes:
    // 
    + game : Game
    // 
    + NextState : GameState
    // 
    + input : Input
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameState  (Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + Deactivate  (GameTime gameTime) virtual

// 
public abstract class GameState : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameState
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + game : Game
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : Input
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime gameTime) abstract
    + Initialize () abstract
    + Unload () abstract
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + GameState  (Game game)
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Deactivate  (GameTime gameTime) virtual
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)

// 
public class OptionScreen : MenuScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - menu : VerticalMenu
  Methods:
    // 
    + OptionScreen  (Core.Game game)
    // 
    + Activate  (GameTime gameTime)
    // 
    + DrawMenu  (GameTime gameTime)
    // 
    + UpdateMenu  (GameTime gameTime)
    + Initialize ()

// 
public abstract class MenuScreen : GameState
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
  Methods:
    // 
    + MenuScreen  (Core.Game game)
    // 
    + Initialize  () override
    // 
    + Update  (GameTime gameTime) override
    // 
    + UpdateMenu  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) override
    // 
    + DrawMenu  (GameTime gameTime) abstract
    // 
    + Activate  (GameTime gameTime) override
    // 
    + Unload  () override
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color

// 
public abstract class GameState : 
  Attributes:
    // 
    + game : Game
    // 
    + NextState : GameState
    // 
    + input : Input
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameState  (Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + Deactivate  (GameTime gameTime) virtual

// 
public abstract class GameState : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameState
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + game : Game
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : Input
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime gameTime) abstract
    + Initialize () abstract
    + Unload () abstract
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + GameState  (Game game)
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Deactivate  (GameTime gameTime) virtual
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)

// 
public abstract class MenuScreen : GameState
  Attributes:
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + MenuScreen  (Core.Game game)
    // 
    + Activate  (GameTime gameTime)
    // 
    + Draw  (GameTime gameTime)
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color
    // 
    + DrawMenu  (GameTime gameTime) abstract
    // 
    + UpdateMenu  (GameTime gameTime) abstract
    + Initialize ()
    + Unload ()
    // 
    + Update  (GameTime gameTime)

// 
public abstract class GameState : 
  Attributes:
    // 
    + game : Game
    // 
    + NextState : GameState
    // 
    + input : Input
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameState  (Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Draw  (GameTime gameTime) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + Deactivate  (GameTime gameTime) virtual

// 
public abstract class GameState : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameState
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + game : Game
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : Input
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime gameTime) abstract
    + Initialize () abstract
    + Unload () abstract
    // 
    + Activate  (GameTime gameTime) virtual
    // 
    + GameState  (Game game)
    // 
    + Update  (GameTime gameTime) abstract
    // 
    + Deactivate  (GameTime gameTime) virtual
    // 
    + AddGameComponents  (GameTime gameTime, params IGameStateComponent[] components)
    // 
    + RemoveGameComponents  (GameTime gameTime, params IGameStateComponent[] components)

