code: private void assertApplicable( FunctionInputDef inputDef) throws IllegalArgumentException
      {
      try
        {
        for( VarNamePattern varNamePattern : getIncludedVars())
          {
          assertApplicable( inputDef, varNamePattern);
          }
        for( VarNamePattern varNamePattern : getExcludedVars())
          {
          assertApplicable( inputDef, varNamePattern);
          }
        }
      catch( Exception e)
        {
        throw new IllegalArgumentException( "Can't apply " + this + " to " + inputDef, e);
        }
      }
docs: Throws an exception if any included/excluded variable pattern is not applicable to the given input definition.