package Entities.Enemies.Keen4 is
type Arachnut is new Enemy with private;
type Bounder is new Enemy with private;
type Cloud is new Enemy with private;
type Inchworm is new Enemy with private;
type Lick is new Enemy with private;
type Mimrock is new Enemy with private;
type Mushroom is new Enemy with private;
type Slug is new Enemy with private;
type Snake is new Enemy with private;
private
type Arachnut is new Enemy with null record;
procedure Construct( this : access Arachnut );
function Object_Input( stream : access Root_Stream_Type'Class ) return Arachnut;
for Arachnut'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Arachnut );
for Arachnut'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Arachnut );
for Arachnut'Write use Object_Write;
type Bounder is new Enemy with null record;
procedure Construct( this : access Bounder );
function Object_Input( stream : access Root_Stream_Type'Class ) return Bounder;
for Bounder'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Bounder );
for Bounder'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Bounder );
for Bounder'Write use Object_Write;
type Cloud is new Enemy with null record;
procedure Construct( this : access Cloud );
function Object_Input( stream : access Root_Stream_Type'Class ) return Cloud;
for Cloud'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Cloud );
for Cloud'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Cloud );
for Cloud'Write use Object_Write;
type Inchworm is new Enemy with null record;
procedure Construct( this : access Inchworm );
function Object_Input( stream : access Root_Stream_Type'Class ) return Inchworm;
for Inchworm'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Inchworm );
for Inchworm'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Inchworm );
for Inchworm'Write use Object_Write;
type Lick is new Enemy with null record;
procedure Construct( this : access Lick );
function Object_Input( stream : access Root_Stream_Type'Class ) return Lick;
for Lick'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Lick );
for Lick'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Lick );
for Lick'Write use Object_Write;
type Mimrock is new Enemy with null record;
procedure Construct( this : access Mimrock );
function Object_Input( stream : access Root_Stream_Type'Class ) return Mimrock;
for Mimrock'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Mimrock );
for Mimrock'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Mimrock );
for Mimrock'Write use Object_Write;
type Mushroom is new Enemy with null record;
procedure Construct( this : access Mushroom );
function Object_Input( stream : access Root_Stream_Type'Class ) return Mushroom;
for Mushroom'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Mushroom );
for Mushroom'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Mushroom );
for Mushroom'Write use Object_Write;
type Slug is new Enemy with null record;
procedure Construct( this : access Slug );
function Object_Input( stream : access Root_Stream_Type'Class ) return Slug;
for Slug'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Slug );
for Slug'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Slug );
for Slug'Write use Object_Write;
type Snake is new Enemy with null record;
procedure Construct( this : access Snake );
function Object_Input( stream : access Root_Stream_Type'Class ) return Snake;
for Snake'Input use Object_Input;
procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Snake );
for Snake'Read use Object_Read;
procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Snake );
for Snake'Write use Object_Write;
end Entities.Enemies.Keen4;