apply (Branch xs) (os:h:oss) =  (ap:h):oss
  where ap = if null os then List (map t2s xs) else List (List (map t2s xs):reverse os)
apply (Branch xs) (os:h:oss) =  (ap:h):oss
  where ap = if null os then List (map t2s xs) else List (List (map t2s xs):reverse os)
apply (Branch xs) (os:h:oss) =  (ap:h):oss
  where ap = if null os then List (map t2s xs) else List (List (map t2s xs):reverse os)