 (s/def ::constructors (s/map-of ::signature ::signature))
 (s/def ::post-init symbol?)
 (s/def ::method (s/and vector?
-                  (s/cat :name simple-symbol?
+                  (s/cat :method-name simple-symbol?
                          :param-types ::signature
                          :return-type ::class-ident)))
 (s/def ::methods (s/coll-of ::method :kind vector?))


;; defn, defn-, fn

(s/def ::arg-list
  (s/and
    vector?
    (s/cat :args (s/* ::binding-form)
           :varargs (s/? (s/cat :amp #{'&} :form ::binding-form)))))

(s/def ::args+body
  (s/cat :args ::arg-list
         :body (s/alt :prepost+body (s/cat :prepost map?
                                           :body (s/+ any?))
                      :body (s/* any?))))

(s/def ::defn-args
  (s/cat :name simple-symbol?
         :docstring (s/? string?)
         :meta (s/? map?)
         :bs (s/alt :arity-1 ::args+body
                    :arity-n (s/cat :bodies (s/+ (s/spec ::args+body))
                                    :attr (s/? map?)))))

(s/fdef clojure.core/defn
  :args ::defn-args

(s/def ::package-list
  (s/spec
    (s/cat :package simple-symbol?
           :classes (s/+ simple-symbol?))))

(s/def ::import-list
  (s/* (s/alt :class simple-symbol?
