function s = set (s, varargin)

  propArgs = varargin;
  while (length (propArgs) >= 2)
    propName  = propArgs{1};
    propValue = propArgs{2};
    propArgs  = propArgs(3:end);
    switch (propName)
      case 'cork'
        if (isa (propValue, 'Cork'))
          s.Cork = propValue;
        else
          s.Cork = set (s.Cork, 'click', propValue);
        end
      case 'gark'
        s.gark = propValue;
      otherwise
        %% Note that get/set for multiple parents is hard.  We only do one
        %% branch of the parent tree just to test this stuff out.
        s.Dork = set (s.Dork, propName, propValue);
    end
  end

end
