// Path: warehouse-model/src/main/java/warehouse/PaletteLabel.java
// @Value
// public class PaletteLabel {
//     private final String id;
//     private final String refNo;
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: warehouse-model/src/main/java/warehouse/products/Delivered.java
// @Value
// public class Delivered {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Destroyed.java
// @Value
// public class Destroyed {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Locked.java
// @Value
// public class Locked {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Unlocked.java
// @Value
// public class Unlocked {
//     private final PaletteLabel paletteLabel;
//     private final int recovered;
//     private final int scraped;
// }


import org.assertj.core.api.Assertions;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import warehouse.PaletteLabel;
import warehouse.products.Delivered;
import warehouse.quality.Destroyed;
import warehouse.quality.Locked;
import warehouse.quality.Unlocked;
import java.lang.invoke.MethodHandles;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
package tools;




/**
 * Created by michal on 15.08.2016.
 */
public class MultiMethodTest {

    public class HandlerOfManyEvents {
        public void apply(Locked event) {
            wasCalled = true;
        }

        protected void apply(Delivered event) {
            wasCalledProtected = true;
        }

// Path: warehouse-model/src/main/java/warehouse/PaletteLabel.java
// @Value
// public class PaletteLabel {
//     private final String id;
//     private final String refNo;
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: warehouse-model/src/main/java/warehouse/products/Delivered.java
// @Value
// public class Delivered {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Destroyed.java
// @Value
// public class Destroyed {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Locked.java
// @Value
// public class Locked {
//     private final PaletteLabel paletteLabel;
// }
// 
// Path: warehouse-model/src/main/java/warehouse/quality/Unlocked.java
// @Value
// public class Unlocked {
//     private final PaletteLabel paletteLabel;
//     private final int recovered;
//     private final int scraped;
// }


// Path: warehouse-infrastructure/src/test/java/tools/MultiMethodTest.java
import org.assertj.core.api.Assertions;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import warehouse.PaletteLabel;
import warehouse.products.Delivered;
import warehouse.quality.Destroyed;
import warehouse.quality.Locked;
import warehouse.quality.Unlocked;
import java.lang.invoke.MethodHandles;
import static org.hamcrest.core.IsInstanceOf.instanceOf;

package tools;




/**
 * Created by michal on 15.08.2016.
 */
public class MultiMethodTest {

    public class HandlerOfManyEvents {
        public void apply(Locked event) {
            wasCalled = true;
        }

        protected void apply(Delivered event) {
            wasCalledProtected = true;
        }

        private void apply(Unlocked event) {