private static void menuOptions( final NakedObjectAction[] actions, final NakedReference target, final UserActionSet menuOptionSet) { for (int i = 0; i < actions.length; i++) { UserAction option = null; if (actions[i].getActions().length > 0) { option = new UserActionSet(actions[i].getName(), menuOptionSet); menuOptions(actions[i].getActions(), target, (UserActionSet) option); } else { int noOfParameters = actions[i].getParameterTypes().length; if (noOfParameters == 0) { option = ImmediateObjectOption.createOption(actions[i], target); } else if (actions[i].isContributedMethodWithSuitableParameter() && noOfParameters == 1 && target != null && target.getSpecification().isOfType(actions[i].getParameterTypes()[0])) { option = ImmediateObjectOption.createServiceOption(actions[i], target); } else { option = DialoggedObjectOption.createOption(actions[i], target); } } if (option != null) { menuOptionSet.add(option); } } } }