class Animal {
	private String _name;
	private String _sound;
	public Animal(String name, String sound) {
		_name = name; _sound = sound; }
	public String getName() { return _name; }
	public void makeSound() {
		System.out.println(_name + " goes " + _sound); }
}

class Flyer extends Animal {
	protected boolean _isFlying; // Error 1: Shadowed variables removed
	public Flyer(String name, String sound) { super(name, sound); }
	public void makeSound() { // Error 3: Superclass constructor call
		if (_isFlying)
			System.out.println(getName() + " goes flap");
		else super.makeSound();
	}
	public void fly() { _isFlying = true; }
	public void stop() { _isFlying = false; }
}

public class NewMcDonald {
	private Animal[] _farm; // New McDonald had a farm (still has now)
	private static final int SIZE = 5; // Fixed farm size of 5

	public NewMcDonald() {
		_farm = new Animal[SIZE];
	}
	
	public void makeSomeNoise() {
		for (int i = 0; i < SIZE; i++)
			_farm[i].makeSound();
	}
	
	public void fillThisFarm() {
		_farm[0] = new Flyer("Parrot", "squak");
		_farm[1] = new Animal("Cow", "moo");
		_farm[2] = new Flyer("Mosquito", "buzz");
		((Flyer)_farm[2]).fly();
		_farm[3] = new Animal("Sheep", "mehh");
		_farm[4] = new Animal("Fish", "blurp");
	}
	
	public static void main(String[] args) {
		NewMcDonald farm = new NewMcDonald();
		farm.fillThisFarm();
		farm.makeSomeNoise();
	}
}

