Dirty trick: you can save the double method definitions by doing this.

module ProtocolVersionMixin
  extend self # mixes this module into its own eigenclass, i.e. the module-instance methods become callable as module methods.
end