                          :head (take 2 form)
                          :doc doc-forms
                          :sig-body args})]
-    (when-not private?
+    (when (or *parse-private-defs?*
+              (not private?))
       {:expected-docs expected-docs
        :docstring (fix-docstring docstring)
        :signature signatures

        attr-map (let [m (first args)]
                   (when (map? m) m))
        args (if attr-map (rest args) args)
        private? (:private attr-map)
        doc-forms (cond-> []
                    docstring (conj docstring)
                    attr-map (conj attr-map))

  [form]
  (let [name- (second form)
        m (meta name-)
        private? (:private m)
        docstring (fix-docstring (:doc m))
        signatures (when-let [arglists (:arglists m)]
                     (when (= 'quote (first arglists))
                       (second arglists)))]
    (when (or *parse-private-defs?*
              (not private?))
      {:docstring docstring
       :signature signatures
       :type "function"})))

(defn parse-var
  [form]
  (let [name- (second form)
        m (meta name-)
        private? (:private m)
        docstring (fix-docstring (:doc m))
        dynamic? (:dynamic m)]
    (when (or *parse-private-defs?*
              (not private?))
      {:docstring docstring
       :type (if dynamic? "dynamic var" "var")})))

(defn parse-defcurried
  [form]
  (let [[_ name- docstring attr-map args] form
        private? (:private attr-map)
        cargs (vec (butlast args))
        signatures [cargs args]]
    (when (or *parse-private-defs?*
              (not private?))
      {:docstring docstring
       :signature signatures
       :type "function"})))

(defn parse-protocol-method
  [form]
