jill/src/main/java/io/github/agentsoz/jill/core/ProgramLoader.java
private static String[] getPlansFromGoalsInfoAnnotation(Class<?> gclass) {
    // Find the plans that this goal has
    Annotation annotation = gclass.getAnnotation(GoalInfo.class);
    if (annotation == null) {
      logger.error("Goal " + gclass.getName() + " is missing the "
          + "@GoalInfo(hasPlans={\"package.PlanClass1, package.PlanClass2, ...\"}) " + knowsNothing
          + "about which plans can handle this goal.");
      return new String[0];
    }
    GoalInfo ginfo = (GoalInfo) annotation;
    String[] plans = ginfo.hasPlans();
    if (plans.length == 0) {
      logger.error("Goal " + gclass.getName()
          + " does not have any plans defined. Was expecting something like "
          + "@GoalInfo(hasPlans={\"package.PlanClass1, package.PlanClass2, ...\"}) " + knowsNothing
          + "about which plans can handle this goal.");
    }
    return plans;
  }
private static String[] getPlansFromGoalsInfoAnnotation(Class<?> gclass) {
    // Find the plans that this goal has
    Annotation annotation = gclass.getAnnotation(GoalInfo.class);
    if (annotation == null) {
      logger.error("Goal " + gclass.getName() + " is missing the "
          + "@GoalInfo(hasPlans={\"package.PlanClass1, package.PlanClass2, ...\"}) " + knowsNothing
          + "about which plans can handle this goal.");
      return new String[0];
    }
    GoalInfo ginfo = (GoalInfo) annotation;
    String[] plans = ginfo.hasPlans();
    if (plans.length == 0) {
      logger.error("Goal " + gclass.getName()
          + " does not have any plans defined. Was expecting something like "
          + "@GoalInfo(hasPlans={\"package.PlanClass1, package.PlanClass2, ...\"}) " + knowsNothing
          + "about which plans can handle this goal.");
    }
    return plans;
  }
Gets the list of plans specified in the @GoalInfo annotation of the given goal class.

@param gclass the goal class containing the @GoalInfo annotation
@return list of plans specified in the @GoalInfo annotation, or an empty array if unsuccessful