std::vector<OSArgument> getArguments(const BCLMeasure& measure, const Workspace& workspace) override {
   if (model::OptionalModel model = workspace.optionalCast<model::Model>()) {
     return m_rubyInterpreter->template execWithReturn<std::vector<OSArgument> >(
           "argumentExtractor", measure, model::OptionalModel(model), OptionalWorkspace());
   }
   else {
     return m_rubyInterpreter->template execWithReturn<std::vector<OSArgument> >(
         "argumentExtractor", measure, model::OptionalModel(), OptionalWorkspace(workspace));
   }
 }
 RubyUserScriptInfo getInfo(const BCLMeasure& measure, const Workspace& workspace) {
   if (model::OptionalModel model = workspace.optionalCast<model::Model>()) {
     return m_rubyInterpreter->template execWithReturn<RubyUserScriptInfo>(
           "infoExtractor", measure, model::OptionalModel(model), OptionalWorkspace());
   }
   else {
     return m_rubyInterpreter->template execWithReturn<RubyUserScriptInfo>(
         "infoExtractor", measure, model::OptionalModel(), OptionalWorkspace(workspace));
   }
 }
 RubyUserScriptInfo getInfo(const BCLMeasure& measure,
                            const model::Model& model,
                            const Workspace& workspace)
 {
   return m_rubyInterpreter->template execWithReturn<RubyUserScriptInfo>(
       "infoExtractor", measure, model::OptionalModel(model), OptionalWorkspace(workspace));
 }
 std::vector<OSArgument> getArguments(const BCLMeasure& measure) override {
   return m_rubyInterpreter->template execWithReturn<std::vector<OSArgument> >(
       "argumentExtractor", measure, model::OptionalModel(), OptionalWorkspace());
 }