     (ternary? rule) (visit-ternary rule)
     (method-call? rule) (visit-method-call rule)
     (member-access? rule) (visit-member-access rule)
+    (vector-access? rule) (visit-vector-access rule)
     (terminal? rule) (.getText rule)
     ;Recursively visit children
     :else (visit-children rule)))

(defn parentheses-expression? [exp]
  (and
    (= (.getChildCount exp) 3)
    (parentheses-char? (.getText (.getChild exp 0)))
    (parentheses-char? (.getText (.getChild exp 2)))))


(defn logical-expression? [exp]


(defn visit-method-call [rule]
  (str
  "__method_call__"
  (visit-rule (.getChild rule 0))
  (when 
    (= (.getChildCount rule) 4)
    (hash (.getText (.getChild rule 2))))))


(defn visit-member-access [rule]
  (str
    (visit-rule (.getChild rule 0))
    "__messages__"
    (visit-rule (.getChild rule 2))))


(defn visit-vector-access [rule]
  (str
    "__vector_access__"
    (visit-rule (.getChild rule 0))
    (hash (.getText (.getChild rule 2)))))
    

(defn visit-children [rule]
  (loop [result "" i 0 max (.getChildCount rule)]
