         else
             super
 
-###
-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
-###
+# 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"
     

            hash[key] = value for key, value of @children
            hash

###
A JSONSigil is a special value in the JSON representation that serves as a directive
or provides more information.  For example, the MoreSigil is a way to specify that
the object was deeper than what is currently represented
###
class JSONSigil
    @className = "JSONSigil"
    @prefix = "__@JSON_"                # This should never show up in the wild


    parts

# 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"
    
