Verifying Information Flow And Metaprogramming In Dynamically Typed Languages