weedExpression (CastB (ID _ depthA) expression depthB)
  -- this is a dirty trick to detect invalidly nested expressions since they are rightfully flattened by the AST Builder
  | depthA > depthB + 11 = Just "Invalid cast"
  | otherwise = Nothing
weedExpression (CastB (ID _ depthA) expression depthB)
  -- this is a dirty trick to detect invalidly nested expressions since they are rightfully flattened by the AST Builder
  | depthA > depthB + 11 = Just "Invalid cast"
  | otherwise = Nothing
weedExpression (CastB (ID _ depthA) expression depthB)
  -- this is a dirty trick to detect invalidly nested expressions since they are rightfully flattened by the AST Builder
  | depthA > depthB + 11 = Just "Invalid cast"
  | otherwise = Nothing