void invoke(CommandIssuer sender, List<String> args, CommandOperationContext context) { if (!scope.canExecute(sender, this)) { return; } preCommand(); try { this.manager.conditions.validateConditions(context); Map<String, Object> passedArgs = resolveContexts(sender, args); if (passedArgs == null) return; method.invoke(scope, passedArgs.values().toArray()); } catch (Exception e) { handleException(sender, args, e); } postCommand(); } public void preCommand() {}