 ; Modifiers
 ; ============================================
 
-(defprotocol modifiersProtocol
+(defprotocol withModifiers
   (getModifiers [this]))
 
-(extend-protocol modifiersProtocol
+(extend-protocol withModifiers
   TypeDeclaration
   (getModifiers [this] (.getModifiers this)))
 
-(extend-protocol modifiersProtocol
+(extend-protocol withModifiers
   MethodDeclaration
   (getModifiers [this] (.getModifiers this)))
 
-(extend-protocol modifiersProtocol
+(extend-protocol withModifiers
   FieldDeclaration
   (getModifiers [this] (.getModifiers this)))
 

; ============================================

(defrecord SingleFieldDeclaration [field variable]
  modifiersProtocol
    (getModifiers [this] (getModifiers field)))

; ============================================
; Model
; ============================================

(defn packageName [n]
  (if (instance? CompilationUnit n)
    (let
      [p (.getPackage n)]
      (if (nil? p)
        ""
        (.toString (.getName p))))
    (try
      (let [pn (.getParentNode n)]
        (if (nil? pn)
          ""
          (packageName pn)))
      (catch Exception e (str "STR PN " (nil? (.getParentNode n)) e) ))))

(defn getName [el]
  (if

(import japa.parser.JavaParser)
(import japa.parser.ast.CompilationUnit)
(import japa.parser.ast.Node)
(import japa.parser.ast.body.ClassOrInterfaceDeclaration)
(import japa.parser.ast.body.EnumDeclaration)
(import japa.parser.ast.body.ConstructorDeclaration)
