weedInterfaceMethod :: Method -> WeedError
weedInterfaceMethod (MTD modifiers var params definition info)
  | (nub modifiers) /= modifiers = Just $ "Method modifiers cannot be repeated" ++ show info
  | not (all (`elem` ["public", "abstract"]) modifiers) = Just $ "Interface methods can only have modifiers 'public' and 'abstract'" ++ show info
  | isJust definition = Just $ "Interface methods cannot have a body" ++ show info
  | otherwise = Nothing
weedInterfaceMethod :: Method -> WeedError
weedInterfaceMethod (MTD modifiers var params definition info)
  | (nub modifiers) /= modifiers = Just $ "Method modifiers cannot be repeated" ++ show info
  | not (all (`elem` ["public", "abstract"]) modifiers) = Just $ "Interface methods can only have modifiers 'public' and 'abstract'" ++ show info
  | isJust definition = Just $ "Interface methods cannot have a body" ++ show info
  | otherwise = Nothing
weedInterfaceMethod (MTD modifiers var params definition info)
  | (nub modifiers) /= modifiers = Just $ "Method modifiers cannot be repeated" ++ show info
  | not (all (`elem` ["public", "abstract"]) modifiers) = Just $ "Interface methods can only have modifiers 'public' and 'abstract'" ++ show info
  | isJust definition = Just $ "Interface methods cannot have a body" ++ show info
  | otherwise = Nothing