title: How can I mark methods created with `reify` with ^:export, so that the Closure compiler doesn't rename them?
body: <p>When creating JavaScript objects with <code>reify</code>, how can I mark the methods with <code>^:export</code> so that the Google Closure compiler doesn't rename them in advanced mode?</p>
  
  <p>For example:</p>
  
  <pre><code>(reify
     Object
     (foo [this] ...)
     (bar [this] ...))
  </code></pre>
  
  <p>I've tried</p>
  
  <pre><code>(reify
     Object
     (^:export foo [this] ...)
     (^:export bar [this] ...))
  </code></pre>
  
  <p>but this doesn't seem to help, and the names still get changed with advanced optimizations.</p>
  
  <p>If there isn't a way to do this, how can I construct a JavaScript object with methods, other than creating a plain <code>js-obj</code> and using <code>set!</code> to set functions to properties (where I'm not sure how to prevent advanced optimizations from breaking things either)?</p>