code: def split (properties):
      
      assert isinstance(properties, basestring)
      def split_one (properties):
          pieces = re.split (__re_slash_or_backslash, properties)
          result = []
  
          for x in pieces:
              if not get_grist (x) and len (result) > 0 and get_grist (result [-1]):
                  result = result [0:-1] + [ result [-1] + '/' + x ]
              else:
                  result.append (x)
  
          return result
  
      if isinstance (properties, str):
          return split_one (properties)
  
      result = []
      for p in properties:
          result += split_one (p)
      return result
docs: Given a property-set of the form
          v1/v2/...vN-1/<fN>vN/<fN+1>vN+1/...<fM>vM
  
      Returns
          v1 v2 ... vN-1 <fN>vN <fN+1>vN+1 ... <fM>vM
  
      Note that vN...vM may contain slashes. This is resilient to the
      substitution of backslashes for slashes, since Jam, unbidden,
      sometimes swaps slash direction on NT.