whole_func_string: function (context) {
      return function (plugin) {
        var pattern = context.pattern;
        if (plugin.match(pattern, opts) === true) {
          plugin.transform(pattern, opts, function (items) {
            if (items instanceof Error) {
              throw items;
            } else {
              // store transformed pattern in context
              context.pattern = items;
            }
          });
        } else {
          // plugin doesn't apply
        }
      };
    }
func_code_string: function (context) {
      return function (plugin) {
        var pattern = context.pattern;
        if (plugin.match(pattern, opts) === true) {
          plugin.transform(pattern, opts, function (items) {
            if (items instanceof Error) {
              throw items;
            } else {
              // store transformed pattern in context
              context.pattern = items;
            }
          });
        } else {
          // plugin doesn't apply
        }
      };
    }
func_documentation_string: FIXME: handler for plugin management