parseConfig :: (ArrowXml a) => a XmlTree TConfig
parseConfig =
    -- When using readDocument, we must start with getChildren >>>
    -- This is not the case with xreadDoc!
    isElem >>> hasName "xtiles-config" >>> ((getChildren >>> isElem
    >>>
    ((hasName "match" >>> parseMatch >>^ ConfigMatch)
      <+>   
     (hasName "create" >>> parseCreate >>^ ConfigCreate)))
    >. id)
    >>^
    (\x -> Config {directives=x})
parseConfig :: (ArrowXml a) => a XmlTree TConfig
parseConfig =
    -- When using readDocument, we must start with getChildren >>>
    -- This is not the case with xreadDoc!
    isElem >>> hasName "xtiles-config" >>> ((getChildren >>> isElem
    >>>
    ((hasName "match" >>> parseMatch >>^ ConfigMatch)
      <+>   
     (hasName "create" >>> parseCreate >>^ ConfigCreate)))
    >. id)
    >>^
    (\x -> Config {directives=x})
parseConfig =
    -- When using readDocument, we must start with getChildren >>>
    -- This is not the case with xreadDoc!
    isElem >>> hasName "xtiles-config" >>> ((getChildren >>> isElem
    >>>
    ((hasName "match" >>> parseMatch >>^ ConfigMatch)
      <+>   
     (hasName "create" >>> parseCreate >>^ ConfigCreate)))
    >. id)
    >>^
    (\x -> Config {directives=x})