# File lib/mcollective/message.rb, line 151
    def validate_compount_filter(compound_filter)
      compound_filter.each do |filter|
        filter.each do |statement|
          if statement["fstatement"]
            functionname = statement["fstatement"]["name"]
            pluginname = Data.pluginname(functionname)
            value = statement["fstatement"]["value"]

            begin
              ddl = DDL.new(pluginname, :data)
            rescue
              raise DDLValidationError, "Could not find DDL for data plugin #{pluginname}, cannot use #{functionname}() in discovery"
            end

            # parses numbers and booleans entered as strings into proper
            # types of data so that DDL validation will pass
            statement["fstatement"]["params"] = Data.ddl_transform_input(ddl, statement["fstatement"]["params"])

            Data.ddl_validate(ddl, statement["fstatement"]["params"])

            unless value && Data.ddl_has_output?(ddl, value)
              raise DDLValidationError, "#{functionname}() does not return a #{value} value"
            end
          end
        end
      end
    end