// Path: src/main/java/org/givwenzen/annotations/InstantiationState.java
// public interface InstantiationState {
//   boolean couldInstantiate();
//   Object getInstantiation();
// }
// 
// Path: src/main/java/org/givwenzen/annotations/InstantiationStateCreator.java
// public class InstantiationStateCreator {
//    public InstantiationState didNotInstantiate() {
//       return DefaultInstantiationState.UNINSTANTIATED;
//    }
// 
//    public InstantiationState didInstantiate(Object instantiatedObject) {
//       return new DefaultInstantiationState(true, instantiatedObject);
//    }
// }
// 
// Path: src/main/java/org/givwenzen/annotations/InstantiationStrategy.java
// public interface InstantiationStrategy {
//   InstantiationState instantiate(Class<?> markedClass, Object parameter) throws InvocationTargetException, InstantiationException,
//       IllegalAccessException;
// }


import org.givwenzen.annotations.InstantiationState;
import org.givwenzen.annotations.InstantiationStateCreator;
import org.givwenzen.annotations.InstantiationStrategy;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;

package bdd.steps;



public class CustomInstantiationStrategy implements InstantiationStrategy {

   public InstantiationState instantiate(Class<?> markedClass, Object parameter) throws InvocationTargetException,
      InstantiationException, IllegalAccessException {

// Path: src/main/java/org/givwenzen/annotations/InstantiationState.java
// public interface InstantiationState {
//   boolean couldInstantiate();
//   Object getInstantiation();
// }
// 
// Path: src/main/java/org/givwenzen/annotations/InstantiationStateCreator.java
// public class InstantiationStateCreator {
//    public InstantiationState didNotInstantiate() {
//       return DefaultInstantiationState.UNINSTANTIATED;
//    }
// 
//    public InstantiationState didInstantiate(Object instantiatedObject) {
//       return new DefaultInstantiationState(true, instantiatedObject);
//    }
// }
// 
// Path: src/main/java/org/givwenzen/annotations/InstantiationStrategy.java
// public interface InstantiationStrategy {
//   InstantiationState instantiate(Class<?> markedClass, Object parameter) throws InvocationTargetException, InstantiationException,
//       IllegalAccessException;
// }


// Path: src/test/java/bdd/steps/CustomInstantiationStrategy.java
import org.givwenzen.annotations.InstantiationState;
import org.givwenzen.annotations.InstantiationStateCreator;
import org.givwenzen.annotations.InstantiationStrategy;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;

package bdd.steps;



public class CustomInstantiationStrategy implements InstantiationStrategy {

   public InstantiationState instantiate(Class<?> markedClass, Object parameter) throws InvocationTargetException,
      InstantiationException, IllegalAccessException {

      InstantiationStateCreator creator = new InstantiationStateCreator();
