 
     parts
 
-###
-A JSONPath is an n-dimensional vector into a JSONSpace
-
-Paths are components that navigate into a space. Given a path vector:
-    <p0, p1, ... pn>
-
-The element returned is that obtained by starting at the root of the space, 
-    - Moving to the p0th object inside the root object
-    - Descending into that object and moving to the p1st object
-    - Descending into that object and moving to the p2nd object
-    - ...
-    - Descending into that object and moving to the pnth object
-    - Returning that object
-
-Paths that are outside the boundary of the space return undefined
-
-Observe that, in Javascript, objects are unordered sets of key/value pairs.
-The spec does not guarantee that these will be returned or represented in any
-particulary orders.  Because of this, the pn's are only numbers when referencing
-a scalar object or a position in an array.  For objects, the pn's will be the keys
-of the object.
-
-The following are examples of JSONPaths:
-    (0)
-    (0, 0)
-    (0, 3, 4, 2, 8, 0)
-    ("foo")
-    (0, 3, "foo", 3, "bar", 7)
-###
+# JSONPath
+# --------
+
+# A JSONPath is an n-dimensional vector into a JSONSpace
+#
+# Paths are components that navigate into a space. Given a path vector:
+#    <p0, p1, ... pn>
+#
+# The element returned is that obtained by starting at the root of the space, 
+#    - Moving to the p0th object inside the root object
+#    - Descending into that object and moving to the p1st object
+#    - Descending into that object and moving to the p2nd object
+#    - ...
+#    - Descending into that object and moving to the pnth object
+#    - Returning that object
+#
+# Paths that are outside the boundary of the space return undefined
+#
+# Observe that, in Javascript, objects are unordered sets of key/value pairs.
+# The spec does not guarantee that these will be returned or represented in any
+# particulary orders.  Because of this, the pn's are only numbers when referencing
+# a scalar object or a position in an array.  For objects, the pn's will be the keys
+# of the object.
+#
+# The following are examples of JSONPaths:
+#    (0)
+#    (0, 0)
+#     (0, 3, 4, 2, 8, 0)
+#    ("foo")
+#    (0, 3, "foo", 3, "bar", 7)
 class JSONPath
     @className = "JSONPath"
     


    value: () -> undefined

###
The MoreSigil signifies that the original model had deeper structure than what is represented here.
It has an optional parameter that specifies how many immediate properties were not serialized.

For example, if there was an array with 20 elements, the Sigil would be __@JSON_more(20)

Very useful as hints to clients that want to know more about the deeper structure without actually
retrieving it
###
class MoreSigil extends JSONSigil
    @className = "MoreSigil"


        else
            super

# RefSigil
# --------
#
# A RefSigil signifies a reference to another part of the JSONSpace.  The path 
# parameter is a JSONPath and is relative to the root of the space
class RefSigil extends JSONSigil
    @className = "RefSigil"
    
