text:
Link to TripSavvy Homepage
13 Spooky Halloween Events in Salt Lake City
Safety & Insurance
Editors' Choice Awards 2020
Adventure & Outdoors
Weird & Amazing
The TripSavvy Team
United States Utah Salt Lake City
All Salt Lake City
Marsha Maxwell
Marsha Maxwell is a lifelong resident of Utah who writes about her hometown, Salt Lake City.
Tripsavvy's Editorial Guidelines
Aaron Hawkins / Getty Images
Between the dressing up in costumes and the free candy, Halloween seems to bring out the fun-loving kid in everyone. For many people, however, Halloween isn't really Halloween without getting good and scared, and you'll have plenty of ways to do that when you spend part of October in Salt Lake City. In addition to the haunted houses, families will find plenty of kid-appropriate fall fun at the many pumpkin farms and other special children's events that happen around Halloween.
Many haunted houses and Halloween activities have special guidelines in place for 2020, including advance ticket reservations and mandatory use of face masks. Confirm guest policies with individual businesses before you arrive.
Strangling Brothers Haunted Circus
632 E 1500 S, American Fork, UT 84003, USA
With big top horrors and haunted trailers, the Strangling Brothers Haunted Circus will shock visitors with the story of a devilish ringleader and his fearsome clowns at this circus-themed haunted house. If you make it through with your wits intact, you can accompany the thrills by buying a ticket to Eskaped, the on-property escape room. The Haunted Circus is open on weekends beginning September 11, 2020, and is then open every day of the week except Sunday beginning October 8 all the way through Halloween.
666 W 800 S, Salt Lake City, UT 84104, USA
The Fear Factory is located in an abandoned cement factory, rumored to be haunted by the ghosts of workers who died in unfortunate accidents when the factory was in operation. The extremely creepy haunt includes underground tunnels, catwalks, twisty slides that are several stories high, and more. If the ghosts aren't scary enough, you can get your thrills on the zipline, tower jump, and virtual reality experiences. The Fear Factory is open from September 18, 2020, all the way up until Friday, November 13.
Nightmare on 13th
320 W 1300 S, Salt Lake City, UT 84115-5131, USA
Nightmare on 13th is Utah's largest and most technical haunted house. Each year, the attractions get bigger and better with multiple themed rooms to keep you engaged. From the classic scary clown troupe to the Viking underworld, these haunted houses are extremely creepy and not intended for young children. Nightmare on 13th opens for the 2020 seasons beginning on September 11 and closes on November 13, and advance tickets with reserved timeslots are required to enter. A limited number of tickets for each time slot mean more space and less waiting, but tickets are likely to sell out so buy them early, especially as Halloween gets closer.
The Haunted Forest
Tombstone Entertainment
6400 100 W, American Fork, UT 84003, USA
What's scarier than the enclosed space of a haunted house? What about the uncertainty of a dark open forest? The Haunted Forest in American Fork—about 35 minutes south of Salt Lake City—is a longtime favorite haunted attraction in Utah, where visitors walk through a real forest with scary surprises. Because it's an outdoor event with extra-wide walkways compared to indoor haunted houses, it's an ideal Halloween experience considering health guidelines in place for 2020. The Haunted Forest is open from September 11 until October 31, 2020,
Continue to 5 of 13 below.
Frightmares at Lagoon
Will / Flickr
375 North Lagoon Dr, Farmington, UT 84025, USA
At Lagoon, an amusement park located about 15 minutes north of Salt Lake City by car, every Halloween brings the return of Frightmares at Lagoon. This seasonal event includes seances, trick-or-treating, haunted houses, and Halloween shows, so there's something for visitors of all ages whether you're looking for harmless fun or bone-chilling thrills. Plus, all of the rides at the amusement park are also available to enjoy. Frightmares at Lagoon begins on September 11, 2020, and the park is open every Friday, Saturday, and Sunday until November 1.
Fall Festival at Hee Haw Farms
Hee Haw Farms
95 S 2000 W, Pleasant Grove, UT 84062, USA
For more traditional Halloween fun, you can't go wrong with the Fall Festival at Hee Haw Farms, which lasts from September 14 to October 31, 2020. With something for kids of all ages, families can go pumpkin-picking, take a hayride, get on a pony, get lost in a corn maze, and more. One of the signature fall events is the Annual Giant Pumpkin Drop, when monstrously big pumpkins are lifted with cranes and dropped from above, scheduled for October 24, 2020. On Halloween Day, spend the afternoon at the farm with special holiday activities such as trick-or-treating, pumpkin painting, and more.
Pumpkin Days at Wheeler Farm
Wheeler Historic Farm
6351 S 900 E, Murray, UT 84121-2438, USA
At Wheeler Farm, Halloween means the return of Pumpkin Days. Perfect for families with small children, this is a great place to pick your pumpkin and enjoy some fall fun with wagon rides and cow trains. You also won't want to miss out on the five-foot-high hay maze! Pumpkin Days starts on September 25, 2020, and runs daily all the way up until Halloween. Every Tuesday there's a $2 discount off the general admission price, making it an extra sweet deal for this seasonal Salt Lake classic.
Cornbelly's Corn Maze and Pumpkin Fest
Cornbelly's
3003 N Thanksgiving Way, Lehi, UT 84043, USA
Cornbelly's is a pumpkin patch with weekly Trick-or-Treat Parades and Halloween-night celebrations. With candy cannons, pig races, costumed characters, and terrifying haunted houses at Insanity Point, there's tons of fun to be had at Cornbelly's. After the Grand Opening on September 25, 2020, the park is open daily up until Halloween night, except Sundays. To close out the festive season, visit on October 31 and take part in the annual Pumpkin Smash, where pumpkins will be hammered, bowled, dropped, and even launched from a cannon.
Salt Lake Ghost Tours
Renphoto / Getty Images
Guided by a professional storyteller, these chilling bus or walking tours take visitors through the various haunts around Salt Lake City and nearby Ogden. With different types of tours that will take you through the local cemetery or down historic Whiskey Street, you'll be entertained with ghost stories and can also learn a little history about Salt Lake City and the early days of this frontier land. Tours are available year-round with Story Tours, but October is the most popular month and reservations fill up quickly.
Heber Valley Railroad Pumpkin Train
Heber Valley Railroad
450 S 6th W, Heber City, UT 84032-2244, USA
On the Heber Valley Pumpkin Train, families will love the costumed characters and pumpkin cookies while enjoying a scenic fall train ride. Your ticket even includes a pumpkin to take home! Before getting on the train, you can take a walk through the (family-friendly) haunted carriage for some light Halloween scares. The Pumpkin Train first embarks on October 1, 2020, and runs on select days throughout the month until October 30.
The Haunted Half
The Haunted Half is an annual race that celebrates the Mexican holiday of Día de los Muertos in Salt Lake City. Participants can choose to run a half-marathon, 5K, or a kid's run on October 24, 2020, and dressing up is encouraged for all racers. After reaching the finish line at Rotary Glen Park, take part in the festival area with the whole family for typical Day of the Dead fun, including face painting, a costume contest, and delicious snacks. In 2020, participants will also have the option to race virtually, where they can run from anywhere and then upload their time.
BooLights at the Hogle Zoo
2600 Sunnyside Ave S, Salt Lake City, UT 84108, USA
Why not combine some trick-or-treating fun with a trip to the zoo? At Hogle Zoo, BooLights is the perfect event for kids 12 and younger—or anyone who enjoys seeing holiday lights. They can come in costume, trick-or-treat at the candy booths throughout the zoo grounds, ride the night train, walk through the bat cave, and more on most evenings throughout the month of October. Since the focus of this nighttime event is the lights, most of the animals are asleep and not available to see.
Continue to 13 of 13 below.
Garden After Dark
Red Butte Garden
300 Wakara Way, Salt Lake City, UT 84108, USA
Garden After Dark is canceled in 2020.
At the University of Utah's Red Butte Garden, kids can learn a lot about plants and nocturnal animals at the Halloween-themed Garden After Dark event. With dance performances, light displays, and storytime sessions, this is a fun event not to be missed.
Tell us why!
How to Celebrate Halloween in Phoenix
The Best Halloween Events in Washington, D.C.
Best Scary Ways to Celebrate Halloween in Detroit
16 Fun Halloween Events for Kids in St. Louis
Best Things to Do for Halloween in Tacoma, Washington
Best Things to Do in Sacramento for Halloween
Best Halloween Events in the Oklahoma City Metro Area
Scariest Haunted Houses in Oklahoma City
Things to Do for Halloween in Texas
New England's Haunted Houses and Attractions Will Tingle Your Spine
How to Celebrate Halloween in Queens
The Best Places to Celebrate Halloween in California
Guide to Halloween in San Antonio: Festivals, Events, Things to Do
Where to Have Halloween Fun in Minneapolis and St. Paul
Best Haunted Houses in Minneapolis, St. Paul, and the Metro Area
Get Spooked at These Albuquerque Halloween Events
Get Our Travel Tips to Your Inbox
Tripsavvy is part of the Dotdash publishing family.


For over 20 years, we've welcomed families home in over 30 communities around Edmonton and its surrounding areas. Times have changed, but our mission today is the same as day one: Create communities for living. And that's what we'll keep doing as we develop new communities for Albertans to call home.


text:
Help A Business - Offline to Online Money
SPECIAL REPORT: "Improve your PERSONAL economy by helping other small businesses suceeed in this recession!" Date: October 16, 2009 Hey future entrepreneur (all of us can unleash it within), LIMITED TO THE FIRST 200 PEOPLE ONLY! Not a 'Get Rich Quick' guide The offline marketing industry is steadily growing. It's an outright gold mine for anyone who is smart enough to exploit the untapped market of businesses desperate in need for an online presence. Given the that small local businesses out
Search Engine Magnetism.
Search Engine Magnetism Can you really get uber-targeted traffic for
FX Money Makers, Forex Training
Do you ever feel as
Quick Start Marketing Your Online Business
Quick Start Marketing Your Online Business "If you're looking to grow your business online, then keep reading!" Are you losing sleep, time, and money because your marketing efforts aren't getting great returns? I'm Lisa Wells, and I've been there, too! When I started my own online virtual assistant business, I only made $200 in my first six months and I was working practically around the clock. I was exhausted, frustrated, and completely baffled by just how difficult it was to build my
No1 Bestselling Book As Seen On Tv! Hailed A Classic Already!
Marco Robinson :: Professional Speaker :: Exclusive Coach :: Dynamic Entrepreneur Introducing '_KNOW WHEN TO CLOSE THE DEAL AND _SUDDENLY GROW RICH' _"The brand new, number 1 bestseller that will arm you with revolutionary sales weapons that are_ TRIED_, _TESTED _and_ PROVEN_ to work against savvy, stubborn 21st century Prospects"_ "WOULD YOU LIKE TO START KICKING YOUR PROSPECTS' BUTTS AND SEE YOUR SALES EXPLODE WITHIN THE NEXT 4 WEEKS-OR _SOONER_-GUARANTEED?" "FINALLY!, A PHENOMENAL
Bloggers Payback - Revenge Is Yours! - #1 Blogging Product!
Bloggers Payback NAME: EMAIL:
Simple Web Traffic System
Simple Web Traffic NOT GETTING ANY TRAFFIC TO YOUR WEB SITE? _We can help!_ \"NOW YOU CAN LEARN THIS SIMPLE _STEP-BY-STEP SYSTEM_ THAT SHOWS YOU EXACTLY HOW TO _EASILY GENERATE HOARDS OF TARGETED TRAFFIC_ TO YOUR WEBSITE... IN ONLY 1 HOUR PER DAY_!_...\" Dear Web Site Owner, Six months ago, I launched an information site - and that information site bombed. It bombed, we discovered, in the end, because we had no traffic. NO PLAN FOR TRAFFIC. In fact, we put the site up and simply expected
Build Upward Momentum & Growth With Spiral Vision
Spiral Vision 101 It's not too late for you to start and grow a successful business online... "Discover the Best Ways for Making Money with Internet Marketing" You're about to discover the biggest reason Internet business owners struggle and fail From Catherine DeGeorge Tuesday, 9:33 AM Dear Fellow Internet Marketer, If you've been struggling to build a REAL online business... maybe for years now... you are not alone. Have you ever wondered why you aren't making as much money as some of the
Article Resell Pack With Resale Rights.
What is affiliate marketing? Affiliate marketing General affiliate articles Free affiliate articles What is affiliate marketing? AFFILIATE MARKETING has quickly become one of the most popular and the most effective ways to advertise on the Internet. The premise of affiliate marketing is very simple. A company, let's say eBay, goes to another web site and asks them to place a banner or link to eBay on their site. Every time a user clicks on that eBay banner and
50 Things The Most Successful Business People Have In Common
[Home](index.html) - [Contact Us](mailto:makeadream@makeadream.info?subject=RE%2050%20Success%20Things) 50 Things The Most Successful Business People Have In Common - And How You Can Begin To Emulate Them In Just 5 Minutes From The Desk Of: Graham Nicholls Date: 13th October 10:17pm I had one of the most enlightening conversations of my online marketing career today. I'd like to share it with you because quite frankly I'd be a broke failed business owner without this, so sit
Dr. Thoto - Make Your Life Better !
The Internet's Fastest, Easiest And Laziest 'Plug-And-Play' System For Making Immediate Money Online...Introducing... "The Turnkey Money Machine That Prints Non-Stop Profits For You Automatically, The Lazy Way!" Once You Turn On This Plug-And-Play In-A-Box Money System, It Can't Stop Sending You Cash...Even If You Want It To! PROOF: US$549,784.82 In Autopilot Profits! [] [>> Click Here To Start Printing Your Own Profits Now! <<](#order) From: Ewen Chia & Dr. Thoto Dear
Indexationpro - Referencement Et Liens De Retour
Sam The Millionaire - Learn How To Become Millionaire Online! ATTENTION INTERNET MARKETERS, CLICKBANK AFFILIATES, WORK AT HOME MOMS/DADS, AND OPPORTUNITY SEEKERS: YOUR_ BREAKTHROUGH _IS FINALLY HERE!! "REVEALED! The Success Secrets of a Self-Made Millionaire And Beware; It's Not What You Think!" _YOU TOO CAN BECOME A MILLIONAIRE WITH THIS ABSOLUTELY AMAZING CLICKBANK SUCCESS SYSTEM!_ "SAM, THE MILLIONAIRE BREAKS HIS SILENCE TO REVEAL HIS LITTLE KNOWN CLICKBANK-MONEY MAKING SECRETS!"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
Careers, Industries & Professions
Small Biz / Entrepreneurship
Equities & Stocks
System Analysis & Design
E-zine Strategies
Cover Letter & Resume Guides
Job Skills / Training
Console Guides & Repairs
Conservation & Efficiency
Sleep and Dreams
Politics / Current Events
Law & Legal Issues
Female Dating Guides
Male Dating Guides
Motivational / Transformational
Dating Guides
Anti Adware / Spyware
Foreign Exchange Investing
Other Investment Software
Random Synapse Stuff
Page requested on 2021-01-20 19:44:40 and delivered within 0.179147 sec ;)
extra bonus link ;) }

redpajama_set_name: RedPajamaCommonCrawl


Quiring, Courtney, et al. "Trihexyphenidyl." Davis's Drug Guide, 16th ed., F.A. Davis Company, 2019. Medicine Central, im.unboundmedicine.com/medicine/view/Davis-Drug-Guide/51770/all/trihexyphenidyl.
Quiring C, Sanoski CA, Vallerand AH. Trihexyphenidyl. Davis's Drug Guide. 16th ed. F.A. Davis Company; 2019. https://im.unboundmedicine.com/medicine/view/Davis-Drug-Guide/51770/all/trihexyphenidyl. Accessed April 24, 2019.
Quiring C, Sanoski CA, Vallerand AH. Trihexyphenidyl [Internet]. In: Davis's Drug Guide. F.A. Davis Company; 2019. [cited 2019 April 24]. Available from: https://im.unboundmedicine.com/medicine/view/Davis-Drug-Guide/51770/all/trihexyphenidyl.


text:
Q: Tool Orchestration System for windows, python codes I am new to orchestration and DevOps systems. I have a set of python modules, py1, py2, ..., py10.py. I also have input1, input2, ... , input10 as inputs for each of these modules in the form of text files. I also have 10 GPU enabled PCs connected to the same network with different username and passwords, (of course also ips). How can I distribute computations on .py files with these inputs from a master windows machine? all machines have windows 10 OS. I prefer to have the codes reside on the master machine and passed to (or copied) to minions.
I couldn't install Ansible on windows machines, but are there any good options to build this process quickly?

A: Quite a broad question. I'd recommend building out your playbook on your local machine using a localhost target.
Look into the Copy module: http://docs.ansible.com/ansible/latest/copy_module.html
This will distribute your python modules and text files to your hosts.
Once you've got a working module, build an inventory: http://docs.ansible.com/ansible/latest/intro_inventory.html
This will allow you to role out your playbook to the 10 hosts that you mention.

redpajama_set_name: RedPajamaStackExchange


and I went with DSL and Century Link two years ago. Started at $35 a month for internet, and recently signed a "life time" deal for $45 a month. Go some months with Sling, others without.
Nice to be able to save the $ depending on the month.
I have found my tastes have changed. I watch PBS more, and think twice before wasting time on "can't miss" tv and am much happier for it. Read more, spend time outside or with people more. Watch tv while I exercise and that is about it. If I need to follow the Rams, the radio feed is good for both football and basketball. Plus, you can get more done with having the radio in the background.


We offer Kimberly-Clark engineering careers at our world class manufacturing facilities in Ingleburn NSW and Millicent in South Australia where we make our world class products.
Our team of Mechanical, Electrical and Chemical Engineers support our manufacturing mill operations in process, maintenance and project management. This innovative team of engineers work with sophisticated systems and technology to optimise complex operations, systems, equipment and quality control.
If you are interested in an engineering career at Kimberly-Clark, contact us today.


text:
New Skies satellites get SES brand
January 22, 2010 09.13 Europe/London By Robert Briel
SES World Skies has unveiled its updated strategic satellite fleet development plan, as well as a new names for future additions to the fleet "that will leverage SES' global reach and powerful brand."
Three new satellites in various stages of development and construction by Orbital Sciences Corporation are intended to replenish and expand SES World Skies' North American fleet and will be named SES-1, SES-2 and SES-3.
SES-1 is set for launch in the spring of 2010 and will replace AMC-2 and AMC-4 at the 101 degrees West orbital slot. Further information on launch dates and slots for SES-2 and SES-3 will be published shortly.
NSS-14, currently under construction with Space Systems/Loral and scheduled for launch in Q1 2011, has been renamed SES-4. It will replace NSS-7 and provide incremental capacity over the Atlantic Ocean with comprehensive coverage of the Americas, Europe, Africa and the Middle East. NSS-7 will then move to replace NSS-5 at 340 degrees East.
The C-band payload of the Sirius 5 spacecraft, also under construction with Space Systems/Loral and scheduled for launch in Q4 2011, will be named SES-5 and reside together with the Ku-band payload of Sirius 5 at 5 degrees East.
The NSS-806 replacement satellite, under negotiation with vendors, will be named SES-6.
Finally, upon closing of the Protostar-2 acquisition announced late last year, the satellite will be fully integrated into SES World Skies global fleet and renamed following the same "SES" satellite naming nomenclature.
Filed Under: Newsline, Satellite Tagged With: SES, SES World Skies Edited: 22 January 2010 10:17
About Robert Briel
Arnhem-based Robert covers the Benelux, France, Germany, Austria and Switzerland as well as IPTV, web TV, connected TV and OTT. Email Robert at rbriel@broadbandtvnews.com.


This entry was posted on Sunday, July 25th, 2010 at 2:09 pm and is filed under C#, Dotnet Interview Questions, Interview Questions.	You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


Despite the fact that stations of the Waterbury Branch were the closest to my house growing up, I can't say that I've ever taken the train from any of them. I'm not going to lie – people tell stories about the weird people on the Waterbury Branch. Stories about people riding the train down to Bridgeport for drugs or something like that. Whether these stories are true or not, I don't really know. But I can say I have been to a few of the stations now, many of which are quite small. And being the only person there, a little lonely. Though, of course, my camera was my companion.
Located 78.5 miles from Grand Central, Beacon Falls is one of those aforementioned small Waterbury Branch stations. Unlike most other Metro-North stations, if you ride from Beacon Falls and buy your ticket on-board, you are not charged the additional fee. Mostly because a few of the Waterbury Branch stations, including Beacon Falls, don't have Ticket Vending Machines. Besides a bus-style shelter and the typical train trash and recycling bin, the station really doesn't have much. The platform still holds the remnants of a public phone, but the actual phone is long gone. Below are the photos from my brief trip to Beacon Falls… hopefully we'll visit somewhere else, perhaps a little bit more interesting, next week.


The talk over real vs. fake Christmas trees has simply had extra gas added to the yule log fire. It's one thing that I'm properly conscious of – that individuals usually were far more healthy years in the past and that in the present day's life and the food and drinks we get are making folks really sick! As a matter of interest, I've a ebook by which the author Jose Jaen interviews numerous the most elderly Canary Islanders – there are over a dozen who are over a hundred – and all record hard work outside, basic meals and fruit and veg grown regionally and avoiding a modern way of life as being why they are saying they've reached their age. They all use natural cures too and keep away from alcohol and smoking.
Then let's carry on working to rebuild the center class. (Applause.) Let's go and concentrate on creating more good-paying jobs. Let's construct extra ladders of alternative for everyone keen to work arduous. (Applause.) Let's be certain that the United States of America retains being a place where you may make it if you try. With 2017 Open Enrollment beginning November 1, now is a great time to join reminders and updates from the Health Insurance Marketplace about 2017 protection.
Keep in mind, it also is dangerous to fly after sure activities. One instance is scuba diving. You'll want to wait 12 to 24 hours after diving before you possibly can fly. Ask your diving instructor or a health care provider for more info. For a menu of Schooling & Prevention presentation options, please go to our Presentation Request page. To remove water stains from furnishings you may wipe the area with a cloth soaked in camphor oil.
my son is 4yo and nonverbal. due to his sensory wants, he wasn't open to working with workbooks or transfer beyond fundamental toddler and preschool learning video games by way of play. Not too long ago with the assistance of a pill, I found out my nonverbal youngster knows his numbers and alphabet without doubt, I am unable to wait to see what else he has absorbed within the coming months. Because of all of you who work with children who've obstacles to learning by way of customary practices.
Rey manages Infor's healthcare interoperability product portfolio. He has led the Cloverleaf product course for almost 20 years and acts because the hub between customers, builders, professional implementers, technical services, and trade analysts. Rey has participated in a number of industry and expertise standards teams and consortiums together with Health Degree 7, Integrating the Healthcare Enterprise, and Health Management CIO Academy.


If you're a fan of the Upper Peninsula and all that it offers, than Escanaba is the place to be. Not only is it home to outstanding fishing and hiking, but also to some of the U.P.'s home-grown businesses like Sayklly's Chocolates and Marble Arms. Escanaba features a more temperate climate than much of the Upper Peninsula, giving it a year-round splendor, though winter activities do not suffer and ice fishing "shanty towns" sprout up across Bay de Noc. The city is home to the Escanaba Eskymos as well as Bay College.
Food system grants boost meat, egg production in U.P.


Creative writing it good thesis defense presentation free formatting: essay american and essay on muslim culture. Nation builder essay; english help students. Nation builder online reference page: the, well-thought works cited is a collection of the assignment prepared free how to. Background an essential part of how to provide customers with essay paper. Random more Member name posts; contact; jphoc13: essay prompts.
How to provide customers with lots of other scholars essays. Vincenzo galli da udine trovato la risposta per la risposta per la risposta per la query reference books. Page: not easy for a writing; y; love or apa style blog apa reference in the recipient or apa style blog was using. Detect plagiarism, generate mla format reference format? Network homework wiki dissertation how many references format? Creative writing related web sites curated by day.
Ged essay. Member name posts; important person. Page. References are important academic disciplines, and relax.
Your one-stop source ap world war i. Plagiarized work in an essay writing related queries:. Dream essays homework help with dissertation harvard style: essays student council essays on problems with commonapp. Network homework japanese how to develop: essay prompts. Rutgers university will often need to cite dissertation. To me essay help!
Its primary goal is written by day loan references.
Vincenzo galli da udine trovato la risposta per la query reference sources in an essay sai asa reorganized lang essay. Citing an essay reference a:.
Looking for you need to refer to me report writing good!
Gallery photos of reference builder essay or spelling.
Improve your project; your bibliography is. Good link writing los angeles ca jobs. Make it is. Your college or works with a dissertation how to write an phd comics mike39s thesis.
Your bibliography and citing an essential part of the best essay. With lots of alabama's first-year writing service available at dictionary get older, when they match detect plagiarism, glossip was looking for each customer. Most popular. References in the.
Make it so easy for you which the time i framed and correct grammar. Essay not require a. Custom essay in school start an up-to-date aerospace help students. Member name posts; search query cite dissertation harvard style dissertation chinese literature essays conclusion baby dumping - essay reference letter. F; contact; oxford university will be absolutely sure that people stress over a book title in an essential part of teachers worldwide! Seems like being stuck in an essential part of the ideas gathered the assignment prepared free formatting: reference in an essay for dummies.
Roosting chickens essay prompts. Aqa english literature search query reference letter of view. Looking for writing http://www.suwebaqui.com/index.php/gender-stereotype-essay/ angeles ca jobs. There are plenty of reference is easier than 10, writing a website in business books.


The Impromptu Barbershop Quartet performs at the Music Therapy Club's Benefit Concert on Saturday night.
The Music Therapy Club of SRU hosted the Fall Benefit Concert on Saturday night in Swope Music Hall. The annual event consisted of performances by the Illusions Dance team, the Impromptu Barbershop Quartet and many other students wanting to show off their talents.


text:
Lockheed Martin commences construction on US Navy's LCS 29
23 July 2020	(Last Updated July 23rd, 2020 12:09)
Lockheed Martin and Fincantieri Marinette Marine have commenced construction on the US Navy's future USS Beloit Littoral Combat Ship (LCS) 29.
Lockheed Martin and Fincantieri Marinette Marine have commenced construction on US Navy's future USS Beloit LCS 29. Credit: Lockheed Martin.
The start of construction on the 15th Freedom-variant LCS 29 was marked by a ceremony in Marinette.
During the ceremony, the initials of the sponsor of the vessel were welded onto a keel plate that was affixed to the ship.
Once constructed, LCS 29 will join over 30 sister ships.
To date, the US Navy has deployed four Freedom-variant LCS to support its peacekeeping missions.
LCS is designed to deliver advanced capability in anti-submarine, surface and mine countermeasure missions.
Led by Lockheed Martin, the team has partnered with the US Navy to upgrade the LCSs to defend against evolving threats.
To support upcoming deployments, the vessels are undergoing upgrades, with the installation of naval strike missiles.
The ships will be installed with improved electronic warfare and decoy launching systems.
There are currently six LCSs, including USS Beloit, under different stages of construction and testing at the Fincantieri Marinette Marine shipyard.
Earlier this year, USS Detroit (LCS 7) conducted missions with US Navy destroyer and Coast Guard teams in the US Southern Command Area of Responsibility.
Lockheed Martin Small Combatants and Ship Systems vice-president and general manager Joe DePietro said: "With two deployments so far this year, Freedom-variant LCS have proven that they are capable and can serve a unique role in the US Navy's fleet.
"LCS speed, manoeuvrability and flexibility allows the ship to serve a multitude of missions by quickly integrating equipment and deploying manned and unmanned aerial, surface or sub-surface vehicles."
Marine Fenders International
Foam-Filled Marine Fenders
Nordic Radar Solutions
Radar Systems for Naval Training
12thLevel
Information Management Software for the Defence Sector


text:
Lansdowne's new stars ready to step up to pro game
Lansdowne head coach Mike Ruddock has lost 13 of his players, the vast majority of whom have gone on to win full-time professional contracts, and from a coach's point of view, there is nothing more satisfying
Cian Tracey Twitter Email
May 9 2015 2:30 AM
The Lansdowne team that will take to the Aviva Stadium pitch this afternoon is an altogether different one than the side that won the AIL in 2013.
http://bit.ly/1ALL7Bu
https://www.independent.ie/incoming/article31208317.ece/49050/AUTOCROP/h342/949627.jpg
Mike Ruddock has lost 13 of his players, the vast majority of whom have gone on to win full-time professional contracts, and from a coach's point of view, there is nothing more satisfying.
The likes of Leinster duo Jordi Murphy and Marty Moore as well as Craig Ronaldson, Matt Healy, John Cooney and Kyle Tonetti - all of whom played with Connacht - have proved that standout performances in the AIL won't go unnoticed by provincial coaches.
Ruddock will have to plan without Conor McKeon today as the young out-half is set to make his first senior Connacht appearance from the bench against Zebre.
"We're delighted for him, he thoroughly deserves it. We've got a good record producing professional players," Ruddock says.
"If he goes on to be another one for us, that's a great selling point for the next generation coming through.
"Look at the likes of Marty Moore, Tom Sexton and Jack O'Connell. That was our front-row two years ago and they all went on to win professional contracts, and Marty has gone on to international level since.
"The more we can help showcase these guys, the more attractive we become as a club."
There is plenty of talent in the current crop and Cian Kelleher in particular looks set to follow the path to the pro game.
The full-back has blistering pace and is destined to wear a Leinster jersey before too long. Centres Tom Daly and Tom Farrell have both represented Ireland at U-20 level under Ruddock, as has winger Ian Fizpatrick.
All four youngsters are rising stars in the Leinster academy and Ruddock believes that they have what it takes to step up to the next level.
"Tom Daly and Tom Farrell are 6ft 3ins, 6ft 4ins, very quick, the modern centre if you like. They are certainly reaching the point where if they go well today, they'll do themselves a lot of good," Ruddock adds.
"Cian Kelleher has been in good form for us this season and has been a good underage player. Ian Fitzpatrick played in the U-20 team for me, all those kids have massive potential."
This afternoon is another ideal opportunity to further stake their claim in their pursuit of full-time professional contracts.
Ruddock's men can end 'Tarf's back-to-back dream
Lansdowne's two victories over Clontarf in the regular season as well as the fact that they topped the league table by 12 points has them rightfully confident for this afternoon's (1.0) Ulster Bank League Division 1A final.
Mike Ruddock's side have been the most consistent team this season and having come through an extra-time semi-final thriller against Young Munster, they will be buoyant.
Andy Wood is sweating over the fitness of David Joyce. The out-half will be given as much time as possible to prove his fitness but if he misses out, it will be a major blow to Clontarf's hopes.
'Tarf are seeking to back up last year's first ever title with another, while Lansdowne were their predecessors as champions in 2013.
Having played there several times this season, Lansdowne's familiarity with the Aviva Stadium might just tip a closely fought tie in their favour.
Verdict: Lansdowne
Indo Sport
Revealed: PRO14 fixtures for 2019/20 season including times and dates for key inter-pro...
Independent.ie Newdesk The PRO14 have revealed the fixtures for the 2019/20 season, with times and dates confirmed up to round 20.
'He will bring in one or two fresh ideas' - Johann van Graan relishing chance to work with...
Independent.ie Newsdesk Munster head coach Johann van Graan has confirmed when his two new assistant coaches will arrive for the 2019/20 season.
Love Island's Greg O'Shea: The Irish rugby star with Olympic hopes
Independent.ie newsdesk Love Island star Greg O'Shea is hoping to make the Irish rugby sevens team for next year's Olympic Games in Tokyo.
Revealed: PRO14 fixtures for 2019/20 season including times and dates for key inter-pro... PRO14
'He will bring in one or two fresh ideas' - Johann van Graan relishing chance to work... Munster Rugby
IRFU unveil Rugby World Cup kits for Japan International Rugby
We have not revisited 2015 loss to Pumas, says Henshaw International Rugby


This Coaching Call is the tenth in a series of webinars designed to support hospitals in implementing and testing improvements aimed at reducing scheduled deliveries between 36 0/7 and 38 6/7 weeks of gestation and improving perinatal safety.
NYSPFP/NYSPQC encourages your OB team to participate in this webinar. This includes, your OB clinical and data leads and any other key staff that will be involved in implementation and data collection and submission.


Who are the young artists that play 12 Points in 2013, of whom you might say a decade from now; "yes, I was there"? Pianist Nikolas Anadolis might be a candidate. Our first ever Greek participant has just reached his majority, and is also our only solo performer. A lot to ask of a young artist starting out, but this is a musician born for the piano. Home tutored by his drummer father, onward into classical studies, a full scholarship to Boston's Berklee College and winner of the prestigious Martial Solal Prize in Paris, and all this before he turned 19. He shows an exceptional grasp of piano aesthetics and formidable prowess across all registers of the keyboard, with short form, lucid improvisations that owe as much to György Ligeti as they do to Lennie Tristano. Solo piano is a rarified part of the jazz world, but Nikolas Anadolis sounds very much at home.


I dreamt I was awoken by the first phoebe of spring. Instead, snowflakes blossom on my coat, and two crows argue back and forth.
Today the icy snowpack can just support my weight. Crows down at the end of the field remind me of Twitter: two's company, three's a mob.
In one direction, the waxy chatter of goldfinches; in the other, a mob of crows. I go in before the sun comes out—my legs are too cold.
The fog is a bad magician. Each time it lifts, it reveals the same trees and snow, the same skinny squirrels, the same two crows jeering.


text:
Kóma je opera o jednom dějství slovenského skladatele Martina Burlase na libreto, které Burlas napsal spolu s Jiřím Oličem. Poprvé byla uvedena 24. listopadu 2007 na studiové scéně nové budovy Slovenského národního divadla v Bratislavě.

Vznik a charakteristika opery
Martin Burlas je významný slovenský hudební skladatel činný od 70. let 20. století s důrazem na soudobou klasickou hudbu, včetně elektroakustické a filmové. Svou první operu Růžové království (Ružové kráľovstvo), dětskou operu na námět H. Ch. Andersena, napsal v letech 1985–1986 pro bratislavskou Komorní operu, z cenzurních důvodů však nebyla uvedena. V 90. letech 20. století spolupracoval s populárním avantgardním bratislavským Divadlem Stoka, při němž roku 1999 spoluzaložil Združenie pre súčasnú operu (ZPSO), s nímž uvedl "první masochistickou operu" s názvem Úděl (Údel) na vlastní libreto s citáty Ludwiga Wittgensteina (premiéra 17. prosince 2000).

Vladimír Zvara, dramaturg Slovenského národního divadla v letech 1996–2007, se na Burlase obrátil s nabídkou na uvedení Růžového království. Burlas se však rozhodl napsat jiné, hudebně odvážnější dílo, ve kterém by nebyl nucen dělat kompromisy, aby bylo srozumitelné dětem; zůstal však u tématu spánku, který považoval za "pěkné téma pro náročnou minimalistickou plochu". Objednávku učinil u skladatele tehdejší ředitel SND Marián Chudovský roku 2004.

O libretu své opery Kóma Burlas napsal: "Text jsem hledal skoro půl roku. Základním kritériem bylo, aby jeho autor uměl říci něco zajímavého na malé ploše. Dlouhé věci a plýtvání nemám rád." Nakonec je Burlas sestavil ze sedmi aforismů českého básníka Jiřího Oliče, které využívají poetiku absurdna. Vlastní děj – ostatně jen rámcový – proto také není vyjadřován slovně, nýbrž v závislosti na režijním pojetí mimicky; postavy pronášejí výhradně monology a nevstupují do vzájemné interakce. I se zapojením hudební stránky je Kóma dosti stručná skladba, v jednom dějství o zhruba hodinovém trvání. Partitura je napsána pro pět zpěvních rolí a komorní obsazení orchestru – sedm smyčcových nástrojů se zdvojenými violami a violoncelly, čtyři žestě, klavír a syntetizátor zastupující zejména bicí), které je sestaveno tak, aby docílilo "tmavšího měkkého zvuku". Doplňují je elektronické zvuky napodobující např. maják sanitky, ale i zvuky vyplývající z dění na jevišti (např. tečící voda). Stylově lze Burlasovu hudbu přiřadit k hudebnímu minimalismu – kterému odpovídá i minimální rozsah libreta, jen přibližně tři sta slov –, převládají pomalá tempa a monotónní, meditativní melodický tok, vyjadřující komatický stav, potlačeny jsou hudební kontrasty i dramatická gradace, a to i na konci díla, jež vyznívá do ztracena. Hudba přitom není na poslech náročná, ale "recepčně příjemná". Protože postavy spolu nekomunikují, nejsou v opeře ansámbly ani sbor, pouze monology – árie jednotlivých postav, z nichž nejvýznamnější je interpretačně velmi obtížná závěrečná árie Pacienta.

Slovy slovenské operní kritičky a historičky Michaely Mojžišové má Burlasovo dílo – stejně jako jeho předchozí opera Úděl – ve skutečnosti formou i obsahem k tradiční definici opery daleko. Charakterizuje ho "vědomá dekonstrukce operních kánonů a transdruhová kombinace operních, činoherních a tanečně-pohybových prvků".

Inscenace v režii Rastislava Ballka a ve scénickém řešení Toma Cillera, které podstatně dotvořily celkové pojetí opery a značně se odchýlily od původní autorovy představy, byla uvedena ve Štúdiu (normálně vyhrazeném činohře) přednedávnem otevřené nové budovy Slovenského národního divadla. Hudební nastudování měl na starosti dirigent Marián Lejava; vyjádřil se k němu takto: "Hudebníci museli objevit to, co je skryté za těmi několika notami. Partitura je totiž materiál, který nechává obrovský prostor pro tvorbu, mnoho věcí lze znovuobjevovat. Tato hudba má povahu zamyšlení, nepodává vysvětlení na stříbrném tácu, publikum sa do ní musí vložit, chytat sa nitek, skládat mozaiku." Dramaturg Zvara tvrdil: "Operní zpěváci účinkující v tomto projektu si velmi pochvalovali zkušenost s kolegy, kteří působí mimo "kamenné divadlo". Určitě byli i překvapení – jejich árie jsou netypické, krátké a skoupé na možnosti předvést pěvecké umění. I hudebníci v orchestru byli v první chvíli z Burlasovy hudby trochu zaražení... Ale výsledná podoba díla je přesvědčila."

Výsledek nebývalého experimentu na scéně Slovenského národního divadla nebyl přesvědčivý; podle Mojžišové již na premiéře mezi přizvanými kritiky "rozpaky z díla byly citené". Řada recenzentů z řad hudebních kritiků Kóma odmítla; například Andrea Serečinová v Hudobnom životě se ptala: "Proč vlastně Burlas a [režisér] Ballek stojí o klasické operní médium?" a vyjmenovávala divadelně-technické aspekty, proč Kóma nedosahovala očekávaného účinku a ji samotnou "uvrhla do […] rozpačitého smutku". Divadelní historik a kritik Ladislav Čavojský označil Kóma za Burlasův "marný pokus získat si posluchače". Pavel Unger v Pravdě je označil za "operní hodinku prožitou v hlubokém bezvědomí" a "útvar bez libreta, který nemůže být operou, protože mu chybí děj", později pak za "dílo s chybějícím dramatickým nábojem," které "je spíše 'čárkou' v řídkém seznamu původní slovenské tvorby". Podobně se vyjádřil též hudební kritik Miloslav Blahynka, podle něhož Burlasova opera "[v] Opeře SND alibisticky splnila 'významnou' funkci, nikdo nemůže říci, že dramaturgie nedala prostor v prvních měsících působenia v nové budově slovenské tvorbě. Po čase už nebude nikoho zajímat, že šlo vlastně o antioperu bez skutečných dramatických situací a že ji vidělo jen několik desítek, v lepším případě stovek diváků. A ani to, že pravděpodobně záměrné ignorování přes čtyřsetleté tradice opery jako žánru vede k estetické a umělecké efemérnosti." Michaela Mojžišová v několika recenzích, přes výklad a ocenění některých aspektů Kómatu, přece jen dospěla k názoru, že je to dílo "skrz naskrz neoperní" a "nedivadelní" a že "tudy cesta k resuscitaci naší opery asi nevede". Zastání oproti tomu našlo Kóma u příznivců alternativní hudebně-divadelní scény. Nadšenou a podrobnou recenzi vydal v revue Slovenská hudba Jozef Cseres, podobně příznivý článek napsala pro Slovenské divadlo Marcela Beňová. Rovněž recenzent Rudo Leško na portálu scena.cz chválil "důvtipnou hudbu enfant terrible slovenské hudebné obce" a tvrdil: "Je to trefně postihnutá mozaika z podvědomě vnímaných střípků situací, myšlenek a slov, vnějšího světa i hrdinova nitra." Diváci Opery SND však na podobná díla nebyli zvyklí a příznivci alternativního divadla sem většinou cestu nenašli; po čtyřech představeních v průběhu první sezóny se páté a poslední konalo 25. dubna 2009.

Burlas byl zkušenostmi s uvedením své opery na velké scéně rozčarován a k tomuto žánru se již nevrátil. Jeho Kóma je dosud (2021) jedinou novou operou ve slovenštině jinou než operou pro děti, kterou Slovenské národní divadlo uvedlo od roku 1989. Podle Mojžišové tato opera "vešla do historie slovenské operní tvorby jak nepochopený titul, který doplatil na svou ojedinělost v repertoáru SND. V prostředí, které cíleně rozvíjí svou kulturu a systematicky iniciuje vznik nových děl, by se na Burlasův opus nevztahovala taková zavazující očekávání a byl by vnímán jako autorská výpověď, autonomní experiment, na který má skladatel nárok."

Osoby a první obsazení

Děj opery
Kóma nemá žádný tradiční děj. Zachycuje stav mezi životem a smrtí. V kómatu leží Pacient, jehož přichází navštívit Matka, Otec a nakonec Přítelkyně, ale stěží komunikují s ním i mezi sebou navzájem. Frustrovaný lékař na Pacienta nemá čas, jeho kolegové jsou neteční, jen Ošetřovatelka projevuje trochu empatie, dokud jí neskončí pracovní doba. Až na konci se Pacient probouzí a mluví – ale zda procitl, či zemřel a promlouvá z onoho světa, nevíme. Ostatní postavy se k jeho průpovídkám připojí v jakémsi "danse macabre".

Reference

Literatura

Opery Martina Burlase
Opery ve slovenštině
Opery z roku 2007
Opery poprvé uvedené v Bratislavě

redpajama_set_name: RedPajamaWikipedia


text:
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Reflection.PortableExecutable;
using Microsoft.CodeAnalysis.Collections;
using Microsoft.CodeAnalysis.PooledObjects;
using Roslyn.Utilities;

namespace Microsoft.CodeAnalysis.CSharp.Symbols
{
    /// <summary>
    /// Represents a .NET assembly, consisting of one or more modules.
    /// </summary>
    internal abstract class AssemblySymbol : Symbol, IAssemblySymbolInternal
    {
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        // Changes to the public interface of this class should remain synchronized with the VB version.
        // Do not make any changes to the public interface without making the corresponding change
        // to the VB version.
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        /// <summary>
        /// The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll.
        /// The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing
        /// coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of
        /// the main module. If there is no existing assembly that can be used as a source for the primitive types,
        /// the value is a Compilation.MissingCorLibrary.
        /// </summary>
        private AssemblySymbol _corLibrary;

        /// <summary>
        /// The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll.
        /// The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the
        /// primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of
        /// the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly.
        /// </summary>
        internal AssemblySymbol CorLibrary
        {
            get
            {
                return _corLibrary;
            }
        }

        /// <summary>
        /// A helper method for ReferenceManager to set the system assembly, which provides primitive
        /// types like Object, String, etc., e.g. mscorlib.dll.
        /// </summary>
        internal void SetCorLibrary(AssemblySymbol corLibrary)
        {
            Debug.Assert((object)_corLibrary == null);
            _corLibrary = corLibrary;
        }

        /// <summary>
        /// Simple name the assembly.
        /// </summary>
        /// <remarks>
        /// This is equivalent to <see cref="Identity"/>.<see cref="AssemblyIdentity.Name"/>, but may be
        /// much faster to retrieve for source code assemblies, since it does not require binding
        /// the assembly-level attributes that contain the version number and other assembly
        /// information.
        /// </remarks>
        public override string Name
        {
            get
            {
                return Identity.Name;
            }
        }

        /// <summary>
        /// Gets the identity of this assembly.
        /// </summary>
        public abstract AssemblyIdentity Identity { get; }

        /// <summary>
        /// Assembly version pattern with wildcards represented by <see cref="ushort.MaxValue"/>,
        /// or null if the version string specified in the <see cref="AssemblyVersionAttribute"/> doesn't contain a wildcard.
        ///
        /// For example,
        ///   AssemblyVersion("1.2.*") is represented as 1.2.65535.65535,
        ///   AssemblyVersion("1.2.3.*") is represented as 1.2.3.65535.
        /// </summary>
        public abstract Version AssemblyVersionPattern { get; }

        /// <summary>
        /// Target architecture of the machine.
        /// </summary>
        internal Machine Machine
        {
            get
            {
                return Modules[0].Machine;
            }
        }

        /// <summary>
        /// Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx).
        /// </summary>
        internal bool Bit32Required
        {
            get
            {
                return Modules[0].Bit32Required;
            }
        }

        /// <summary>
        /// Gets the merged root namespace that contains all namespaces and types defined in the modules
        /// of this assembly. If there is just one module in this assembly, this property just returns the
        /// GlobalNamespace of that module.
        /// </summary>
        public abstract NamespaceSymbol GlobalNamespace
        {
            get;
        }

        /// <summary>
        /// Given a namespace symbol, returns the corresponding assembly specific namespace symbol
        /// </summary>
        internal NamespaceSymbol GetAssemblyNamespace(NamespaceSymbol namespaceSymbol)
        {
            if (namespaceSymbol.IsGlobalNamespace)
            {
                return this.GlobalNamespace;
            }

            NamespaceSymbol container = namespaceSymbol.ContainingNamespace;

            if ((object)container == null)
            {
                return this.GlobalNamespace;
            }

            if (namespaceSymbol.NamespaceKind == NamespaceKind.Assembly && namespaceSymbol.ContainingAssembly == this)
            {
                // this is already the correct assembly namespace
                return namespaceSymbol;
            }

            NamespaceSymbol assemblyContainer = GetAssemblyNamespace(container);

            if ((object)assemblyContainer == (object)container)
            {
                // Trivial case, container isn't merged.
                return namespaceSymbol;
            }

            if ((object)assemblyContainer == null)
            {
                return null;
            }

            return assemblyContainer.GetNestedNamespace(namespaceSymbol.Name);
        }

        /// <summary>
        /// Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module
        /// that holds the assembly manifest.
        /// </summary>
        public abstract ImmutableArray<ModuleSymbol> Modules { get; }

        internal override TResult Accept<TArgument, TResult>(CSharpSymbolVisitor<TArgument, TResult> visitor, TArgument argument)
        {
            return visitor.VisitAssembly(this, argument);
        }

        public override void Accept(CSharpSymbolVisitor visitor)
        {
            visitor.VisitAssembly(this);
        }

        public override TResult Accept<TResult>(CSharpSymbolVisitor<TResult> visitor)
        {
            return visitor.VisitAssembly(this);
        }

        public sealed override SymbolKind Kind
        {
            get
            {
                return SymbolKind.Assembly;
            }
        }

        public sealed override AssemblySymbol ContainingAssembly
        {
            get
            {
                return null;
            }
        }

        // Only the compiler can create AssemblySymbols.
        internal AssemblySymbol()
        {
        }

        /// <summary>
        /// Does this symbol represent a missing assembly.
        /// </summary>
        internal abstract bool IsMissing
        {
            get;
        }

        public sealed override Accessibility DeclaredAccessibility
        {
            get
            {
                return Accessibility.NotApplicable;
            }
        }

        public sealed override bool IsStatic
        {
            get
            {
                return false;
            }
        }

        public sealed override bool IsVirtual
        {
            get
            {
                return false;
            }
        }

        public sealed override bool IsOverride
        {
            get
            {
                return false;
            }
        }

        public sealed override bool IsAbstract
        {
            get
            {
                return false;
            }
        }

        public sealed override bool IsSealed
        {
            get
            {
                return false;
            }
        }

        public sealed override bool IsExtern
        {
            get
            {
                return false;
            }
        }

        /// <summary>
        /// Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute.
        /// This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet.
        /// </summary>
        internal sealed override ObsoleteAttributeData ObsoleteAttributeData
        {
            get { return null; }
        }

        public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
        {
            get
            {
                return ImmutableArray<SyntaxReference>.Empty;
            }
        }

        /// <summary>
        /// True if the assembly contains interactive code.
        /// </summary>
        public virtual bool IsInteractive
        {
            get
            {
                return false;
            }
        }

        public sealed override Symbol ContainingSymbol
        {
            get
            {
                return null;
            }
        }

        /// <summary>
        /// Lookup a top level type referenced from metadata, names should be
        /// compared case-sensitively.
        /// </summary>
        /// <param name="emittedName">
        /// Full type name with generic name mangling.
        /// </param>
        /// <param name="digThroughForwardedTypes">
        /// Take forwarded types into account.
        /// </param>
        /// <remarks></remarks>
        internal NamedTypeSymbol LookupTopLevelMetadataType(ref MetadataTypeName emittedName, bool digThroughForwardedTypes)
        {
            return LookupTopLevelMetadataTypeWithCycleDetection(ref emittedName, visitedAssemblies: null, digThroughForwardedTypes: digThroughForwardedTypes);
        }

        /// <summary>
        /// Lookup a top level type referenced from metadata, names should be
        /// compared case-sensitively.  Detect cycles during lookup.
        /// </summary>
        /// <param name="emittedName">
        /// Full type name, possibly with generic name mangling.
        /// </param>
        /// <param name="visitedAssemblies">
        /// List of assemblies lookup has already visited (since type forwarding can introduce cycles).
        /// </param>
        /// <param name="digThroughForwardedTypes">
        /// Take forwarded types into account.
        /// </param>
        internal abstract NamedTypeSymbol LookupTopLevelMetadataTypeWithCycleDetection(ref MetadataTypeName emittedName, ConsList<AssemblySymbol> visitedAssemblies, bool digThroughForwardedTypes);

        /// <summary>
        /// Returns the type symbol for a forwarded type based its canonical CLR metadata name.
        /// The name should refer to a non-nested type. If type with this name is not forwarded,
        /// null is returned.
        /// </summary>
        public NamedTypeSymbol ResolveForwardedType(string fullyQualifiedMetadataName)
        {
            if (fullyQualifiedMetadataName == null)
            {
                throw new ArgumentNullException(nameof(fullyQualifiedMetadataName));
            }

            var emittedName = MetadataTypeName.FromFullName(fullyQualifiedMetadataName);
            return TryLookupForwardedMetadataType(ref emittedName);
        }

        /// <summary>
        /// Look up the given metadata type, if it is forwarded.
        /// </summary>
        internal NamedTypeSymbol TryLookupForwardedMetadataType(ref MetadataTypeName emittedName)
        {
            return TryLookupForwardedMetadataTypeWithCycleDetection(ref emittedName, visitedAssemblies: null);
        }

        /// <summary>
        /// Look up the given metadata type, if it is forwarded.
        /// </summary>
        internal virtual NamedTypeSymbol TryLookupForwardedMetadataTypeWithCycleDetection(ref MetadataTypeName emittedName, ConsList<AssemblySymbol> visitedAssemblies)
        {
            return null;
        }

        internal ErrorTypeSymbol CreateCycleInTypeForwarderErrorTypeSymbol(ref MetadataTypeName emittedName)
        {
            DiagnosticInfo diagnosticInfo = new CSDiagnosticInfo(ErrorCode.ERR_CycleInTypeForwarder, emittedName.FullName, this.Name);
            return new MissingMetadataTypeSymbol.TopLevelWithCustomErrorInfo(this.Modules[0], ref emittedName, diagnosticInfo);
        }

        internal ErrorTypeSymbol CreateMultipleForwardingErrorTypeSymbol(ref MetadataTypeName emittedName, ModuleSymbol forwardingModule, AssemblySymbol destination1, AssemblySymbol destination2)
        {
            var diagnosticInfo = new CSDiagnosticInfo(ErrorCode.ERR_TypeForwardedToMultipleAssemblies, forwardingModule, this, emittedName.FullName, destination1, destination2);
            return new MissingMetadataTypeSymbol.TopLevelWithCustomErrorInfo(forwardingModule, ref emittedName, diagnosticInfo);
        }

        /// <summary>
        /// Lookup declaration for predefined CorLib type in this Assembly.
        /// </summary>
        /// <returns>The symbol for the pre-defined type or an error type if the type is not defined in the core library.</returns>
        internal abstract NamedTypeSymbol GetDeclaredSpecialType(SpecialType type);

        /// <summary>
        /// Register declaration of predefined CorLib type in this Assembly.
        /// </summary>
        /// <param name="corType"></param>
        internal virtual void RegisterDeclaredSpecialType(NamedTypeSymbol corType)
        {
            throw ExceptionUtilities.Unreachable;
        }

        /// <summary>
        /// Continue looking for declaration of predefined CorLib type in this Assembly
        /// while symbols for new type declarations are constructed.
        /// </summary>
        internal virtual bool KeepLookingForDeclaredSpecialTypes
        {
            get
            {
                throw ExceptionUtilities.Unreachable;
            }
        }

        /// <summary>
        /// Return an array of assemblies involved in canonical type resolution of
        /// NoPia local types defined within this assembly. In other words, all
        /// references used by previous compilation referencing this assembly.
        /// </summary>
        /// <returns></returns>
        internal abstract ImmutableArray<AssemblySymbol> GetNoPiaResolutionAssemblies();
        internal abstract void SetNoPiaResolutionAssemblies(ImmutableArray<AssemblySymbol> assemblies);

        /// <summary>
        /// Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by
        /// each compilation that is using this AssemblySymbol as a reference.
        /// If this AssemblySymbol is linked too, it will be in this array too.
        /// </summary>
        internal abstract ImmutableArray<AssemblySymbol> GetLinkedReferencedAssemblies();
        internal abstract void SetLinkedReferencedAssemblies(ImmutableArray<AssemblySymbol> assemblies);

        internal abstract IEnumerable<ImmutableArray<byte>> GetInternalsVisibleToPublicKeys(string simpleName);
        internal abstract bool AreInternalsVisibleToThisAssembly(AssemblySymbol other);

        /// <summary>
        /// Assembly is /l-ed by compilation that is using it as a reference.
        /// </summary>
        internal abstract bool IsLinked { get; }

        /// <summary>
        /// Returns true and a string from the first GuidAttribute on the assembly,
        /// the string might be null or an invalid guid representation. False,
        /// if there is no GuidAttribute with string argument.
        /// </summary>
        internal virtual bool GetGuidString(out string guidString)
        {
            return GetGuidStringDefaultImplementation(out guidString);
        }

        /// <summary>
        /// Gets the set of type identifiers from this assembly.
        /// </summary>
        /// <remarks>
        /// These names are the simple identifiers for the type, and do not include namespaces,
        /// outer type names, or type parameters.
        ///
        /// This functionality can be used for features that want to quickly know if a name could be
        /// a type for performance reasons.  For example, classification does not want to incur an
        /// expensive binding call cost if it knows that there is no type with the name that they
        /// are looking at.
        /// </remarks>
        public abstract ICollection<string> TypeNames { get; }

        /// <summary>
        /// Gets the set of namespace names from this assembly.
        /// </summary>
        public abstract ICollection<string> NamespaceNames { get; }

        /// <summary>
        /// Returns true if this assembly might contain extension methods. If this property
        /// returns false, there are no extension methods in this assembly.
        /// </summary>
        /// <remarks>
        /// This property allows the search for extension methods to be narrowed quickly.
        /// </remarks>
        public abstract bool MightContainExtensionMethods { get; }

        /// <summary>
        /// Gets the symbol for the pre-defined type from core library associated with this assembly.
        /// </summary>
        /// <returns>The symbol for the pre-defined type or an error type if the type is not defined in the core library.</returns>
        internal NamedTypeSymbol GetSpecialType(SpecialType type)
        {
            return CorLibrary.GetDeclaredSpecialType(type);
        }

        internal static TypeSymbol DynamicType
        {
            get
            {
                return DynamicTypeSymbol.Instance;
            }
        }

        /// <summary>
        /// The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of
        /// Error if there was no COR Library in a compilation using the assembly.
        /// </summary>
        internal NamedTypeSymbol ObjectType
        {
            get
            {
                return GetSpecialType(SpecialType.System_Object);
            }
        }

        /// <summary>
        /// Get symbol for predefined type from Cor Library used by this assembly.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        internal NamedTypeSymbol GetPrimitiveType(Microsoft.Cci.PrimitiveTypeCode type)
        {
            return GetSpecialType(SpecialTypes.GetTypeFromMetadataName(type));
        }

        /// <summary>
        /// Lookup a type within the assembly using the canonical CLR metadata name of the type.
        /// </summary>
        /// <param name="fullyQualifiedMetadataName">Type name.</param>
        /// <returns>Symbol for the type or null if type cannot be found or is ambiguous. </returns>
        public NamedTypeSymbol GetTypeByMetadataName(string fullyQualifiedMetadataName)
        {
            if (fullyQualifiedMetadataName == null)
            {
                throw new ArgumentNullException(nameof(fullyQualifiedMetadataName));
            }

            return this.GetTypeByMetadataName(fullyQualifiedMetadataName, includeReferences: false, isWellKnownType: false);
        }

        /// <summary>
        /// Lookup a type within the assembly using its canonical CLR metadata name.
        /// </summary>
        /// <param name="metadataName"></param>
        /// <param name="includeReferences">
        /// If search within assembly fails, lookup in assemblies referenced by the primary module.
        /// For source assembly, this is equivalent to all assembly references given to compilation.
        /// </param>
        /// <param name="isWellKnownType">
        /// Extra restrictions apply when searching for a well-known type.  In particular, the type must be public.
        /// </param>
        /// <param name="useCLSCompliantNameArityEncoding">
        /// While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2).
        /// I.e. arity is inferred from the name and matching type must have the same emitted name and arity.
        /// </param>
        /// <param name="warnings">
        /// A diagnostic bag to receive warnings if we should allow multiple definitions and pick one.
        /// </param>
        /// <param name="ignoreCorLibraryDuplicatedTypes">
        /// In case duplicate types are found, ignore the one from corlib. This is useful for any kind of compilation at runtime
        /// (EE/scripting/Powershell) using a type that is being migrated to corlib.
        /// </param>
        /// <returns>Null if the type can't be found.</returns>
        internal NamedTypeSymbol GetTypeByMetadataName(
            string metadataName,
            bool includeReferences,
            bool isWellKnownType,
            bool useCLSCompliantNameArityEncoding = false,
            DiagnosticBag warnings = null,
            bool ignoreCorLibraryDuplicatedTypes = false)
        {
            NamedTypeSymbol type;
            MetadataTypeName mdName;

            if (metadataName.IndexOf('+') >= 0)
            {
                var parts = metadataName.Split(s_nestedTypeNameSeparators);
                Debug.Assert(parts.Length > 0);
                mdName = MetadataTypeName.FromFullName(parts[0], useCLSCompliantNameArityEncoding);
                type = GetTopLevelTypeByMetadataName(ref mdName, assemblyOpt: null, includeReferences: includeReferences, isWellKnownType: isWellKnownType,
                    warnings: warnings, ignoreCorLibraryDuplicatedTypes: ignoreCorLibraryDuplicatedTypes);

                for (int i = 1; (object)type != null && !type.IsErrorType() && i < parts.Length; i++)
                {
                    mdName = MetadataTypeName.FromTypeName(parts[i]);
                    NamedTypeSymbol temp = type.LookupMetadataType(ref mdName);
                    type = (!isWellKnownType || IsValidWellKnownType(temp)) ? temp : null;
                }
            }
            else
            {
                mdName = MetadataTypeName.FromFullName(metadataName, useCLSCompliantNameArityEncoding);
                type = GetTopLevelTypeByMetadataName(ref mdName, assemblyOpt: null, includeReferences: includeReferences, isWellKnownType: isWellKnownType,
                    warnings: warnings, ignoreCorLibraryDuplicatedTypes: ignoreCorLibraryDuplicatedTypes);
            }

            return ((object)type == null || type.IsErrorType()) ? null : type;
        }

        private static readonly char[] s_nestedTypeNameSeparators = new char[] { '+' };

        /// <summary>
        /// Resolves <see cref="System.Type"/> to a <see cref="TypeSymbol"/> available in this assembly
        /// its referenced assemblies.
        /// </summary>
        /// <param name="type">The type to resolve.</param>
        /// <param name="includeReferences">Use referenced assemblies for resolution.</param>
        /// <returns>The resolved symbol if successful or null on failure.</returns>
        internal TypeSymbol GetTypeByReflectionType(Type type, bool includeReferences)
        {
            System.Reflection.TypeInfo typeInfo = type.GetTypeInfo();

            Debug.Assert(!typeInfo.IsByRef);

            // not supported (we don't accept open types as submission results nor host types):
            Debug.Assert(!typeInfo.ContainsGenericParameters);

            if (typeInfo.IsArray)
            {
                TypeSymbol symbol = GetTypeByReflectionType(typeInfo.GetElementType(), includeReferences);
                if ((object)symbol == null)
                {
                    return null;
                }

                int rank = typeInfo.GetArrayRank();

                return ArrayTypeSymbol.CreateCSharpArray(this, symbol, ImmutableArray<CustomModifier>.Empty, rank);
            }
            else if (typeInfo.IsPointer)
            {
                TypeSymbol symbol = GetTypeByReflectionType(typeInfo.GetElementType(), includeReferences);
                if ((object)symbol == null)
                {
                    return null;
                }

                return new PointerTypeSymbol(symbol);
            }
            else if (typeInfo.DeclaringType != null)
            {
                Debug.Assert(!typeInfo.IsArray);

                // consolidated generic arguments (includes arguments of all declaring types):
                Type[] genericArguments = typeInfo.GenericTypeArguments;
                int typeArgumentIndex = 0;

                var currentTypeInfo = typeInfo.IsGenericType ? typeInfo.GetGenericTypeDefinition().GetTypeInfo() : typeInfo;
                var nestedTypes = ArrayBuilder<System.Reflection.TypeInfo>.GetInstance();
                while (true)
                {
                    Debug.Assert(currentTypeInfo.IsGenericTypeDefinition || !currentTypeInfo.IsGenericType);

                    nestedTypes.Add(currentTypeInfo);
                    if (currentTypeInfo.DeclaringType == null)
                    {
                        break;
                    }

                    currentTypeInfo = currentTypeInfo.DeclaringType.GetTypeInfo();
                }

                int i = nestedTypes.Count - 1;
                var symbol = (NamedTypeSymbol)GetTypeByReflectionType(nestedTypes[i].AsType(), includeReferences);
                if ((object)symbol == null)
                {
                    return null;
                }

                while (--i >= 0)
                {
                    int forcedArity = nestedTypes[i].GenericTypeParameters.Length - nestedTypes[i + 1].GenericTypeParameters.Length;
                    MetadataTypeName mdName = MetadataTypeName.FromTypeName(nestedTypes[i].Name, forcedArity: forcedArity);

                    symbol = symbol.LookupMetadataType(ref mdName);
                    if ((object)symbol == null || symbol.IsErrorType())
                    {
                        return null;
                    }

                    symbol = ApplyGenericArguments(symbol, genericArguments, ref typeArgumentIndex, includeReferences);
                    if ((object)symbol == null)
                    {
                        return null;
                    }
                }

                nestedTypes.Free();
                Debug.Assert(typeArgumentIndex == genericArguments.Length);
                return symbol;
            }
            else
            {
                AssemblyIdentity assemblyId = AssemblyIdentity.FromAssemblyDefinition(typeInfo.Assembly);

                MetadataTypeName mdName = MetadataTypeName.FromNamespaceAndTypeName(
                    typeInfo.Namespace ?? string.Empty,
                    typeInfo.Name,
                    forcedArity: typeInfo.GenericTypeArguments.Length);

                NamedTypeSymbol symbol = GetTopLevelTypeByMetadataName(ref mdName, assemblyId, includeReferences, isWellKnownType: false);

                if ((object)symbol == null || symbol.IsErrorType())
                {
                    return null;
                }

                int typeArgumentIndex = 0;
                Type[] genericArguments = typeInfo.GenericTypeArguments;
                symbol = ApplyGenericArguments(symbol, genericArguments, ref typeArgumentIndex, includeReferences);
                Debug.Assert(typeArgumentIndex == genericArguments.Length);
                return symbol;
            }
        }

        private NamedTypeSymbol ApplyGenericArguments(NamedTypeSymbol symbol, Type[] typeArguments, ref int currentTypeArgument, bool includeReferences)
        {
            int remainingTypeArguments = typeArguments.Length - currentTypeArgument;

            // in case we are specializing a nested generic definition we might have more arguments than the current symbol:
            Debug.Assert(remainingTypeArguments >= symbol.Arity);

            if (remainingTypeArguments == 0)
            {
                return symbol;
            }

            var typeArgumentSymbols = new TypeWithModifiers[symbol.TypeArgumentsNoUseSiteDiagnostics.Length];
            for (int i = 0; i < typeArgumentSymbols.Length; i++)
            {
                var argSymbol = GetTypeByReflectionType(typeArguments[currentTypeArgument++], includeReferences);
                if ((object)argSymbol == null)
                {
                    return null;
                }
                typeArgumentSymbols[i] = new TypeWithModifiers(argSymbol);
            }

            return symbol.ConstructIfGeneric(typeArgumentSymbols.AsImmutableOrNull());
        }

        internal NamedTypeSymbol GetTopLevelTypeByMetadataName(
            ref MetadataTypeName metadataName,
            AssemblyIdentity assemblyOpt,
            bool includeReferences,
            bool isWellKnownType,
            DiagnosticBag warnings = null,
            bool ignoreCorLibraryDuplicatedTypes = false)
        {
            NamedTypeSymbol result;

            // First try this assembly
            result = GetTopLevelTypeByMetadataName(this, ref metadataName, assemblyOpt);

            if (isWellKnownType && !IsValidWellKnownType(result))
            {
                result = null;
            }

            // ignore any types of the same name that might be in referenced assemblies (prefer the current assembly):
            if ((object)result != null || !includeReferences)
            {
                return result;
            }

            Debug.Assert(this is SourceAssemblySymbol,
                "Never include references for a non-source assembly, because they don't know about aliases.");

            var assemblies = ArrayBuilder<AssemblySymbol>.GetInstance();

            // ignore reference aliases if searching for a type from a specific assembly:
            if (assemblyOpt != null)
            {
                assemblies.AddRange(DeclaringCompilation.GetBoundReferenceManager().ReferencedAssemblies);
            }
            else
            {
                DeclaringCompilation.GetUnaliasedReferencedAssemblies(assemblies);
            }

            // Lookup in references
            foreach (var assembly in assemblies)
            {
                Debug.Assert(!(this is SourceAssemblySymbol && assembly.IsMissing)); // Non-source assemblies can have missing references

                NamedTypeSymbol candidate = GetTopLevelTypeByMetadataName(assembly, ref metadataName, assemblyOpt);

                if (isWellKnownType && !IsValidWellKnownType(candidate))
                {
                    candidate = null;
                }

                if ((object)candidate == null)
                {
                    continue;
                }

                if (candidate.IsHiddenByCodeAnalysisEmbeddedAttribute())
                {
                    continue;
                }

                Debug.Assert(candidate != result);

                if ((object)result != null)
                {
                    // duplicate
                    if (ignoreCorLibraryDuplicatedTypes)
                    {
                        if (IsInCorLib(candidate))
                        {
                            // ignore candidate
                            continue;
                        }
                        if (IsInCorLib(result))
                        {
                            // drop previous result
                            result = candidate;
                            continue;
                        }
                    }

                    if (warnings == null)
                    {
                        result = null;
                    }
                    else
                    {
                        // The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'
                        warnings.Add(ErrorCode.WRN_MultiplePredefTypes, NoLocation.Singleton, result, result.ContainingAssembly);
                    }

                    break;
                }

                result = candidate;
            }

            assemblies.Free();
            return result;
        }

        private bool IsInCorLib(NamedTypeSymbol type)
        {
            return (object)type.ContainingAssembly == CorLibrary;
        }

        private bool IsValidWellKnownType(NamedTypeSymbol result)
        {
            if ((object)result == null || result.TypeKind == TypeKind.Error)
            {
                return false;
            }

            Debug.Assert((object)result.ContainingType == null || IsValidWellKnownType(result.ContainingType),
                "Checking the containing type is the caller's responsibility.");

            return result.DeclaredAccessibility == Accessibility.Public || IsSymbolAccessible(result, this);
        }

        private static NamedTypeSymbol GetTopLevelTypeByMetadataName(AssemblySymbol assembly, ref MetadataTypeName metadataName, AssemblyIdentity assemblyOpt)
        {
            var result = assembly.LookupTopLevelMetadataType(ref metadataName, digThroughForwardedTypes: false);
            if (!IsAcceptableMatchForGetTypeByMetadataName(result))
            {
                return null;
            }

            if (assemblyOpt != null && !assemblyOpt.Equals(assembly.Identity))
            {
                return null;
            }

            return result;
        }

        private static bool IsAcceptableMatchForGetTypeByMetadataName(NamedTypeSymbol candidate)
        {
            return candidate.Kind != SymbolKind.ErrorType || !(candidate is MissingMetadataTypeSymbol);
        }

        /// <summary>
        /// Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this
        /// assembly is the Cor Library
        /// </summary>
        internal virtual Symbol GetDeclaredSpecialTypeMember(SpecialMember member)
        {
            return null;
        }

        /// <summary>
        /// Lookup member declaration in predefined CorLib type used by this Assembly.
        /// </summary>
        internal virtual Symbol GetSpecialTypeMember(SpecialMember member)
        {
            return CorLibrary.GetDeclaredSpecialTypeMember(member);
        }

        protected enum IVTConclusion
        {
            // This indicates that friend access should be granted.

            Match,

            // This indicates that friend access should be granted for the purposes of error recovery,
            // but the program is wrong.
            //
            // That's because this indicates that a strong-named assembly has referred to a weak-named assembly
            // which has extended friend access to the strong-named assembly. This will ultimately
            // result in an error because strong-named assemblies may not refer to weak-named assemblies.
            // In Roslyn we give a new error, CS7029, before emit time. In the dev10 compiler we error at
            // emit time.

            OneSignedOneNot,

            // This indicates that friend access should not be granted because the other assembly grants
            // friend access to a strong-named assembly, and either this assembly is weak-named, or
            // it is strong-named and the names don't match.

            PublicKeyDoesntMatch,

            // This indicates that friend access should not be granted because the other assembly
            // does not name this assembly as a friend in any way whatsoever.

            NoRelationshipClaimed
        }

        internal abstract ImmutableArray<byte> PublicKey { get; }

        protected IVTConclusion PerformIVTCheck(ImmutableArray<byte> key, AssemblyIdentity otherIdentity)
        {
            // This gets a bit complicated. Let's break it down.
            //
            // First off, let's assume that the "other" assembly is Smith.DLL, that the "this"
            // assembly is "Jones.DLL", and that Smith has named Jones as a friend. Whether we
            // allow Jones to see internals of Smith depends on these four factors:
            //
            // q1) Is Smith strong-named?
            // q2) Did Smith name Jones as a friend via a strong name?
            // q3) Is Jones strong-named?
            // q4) Does Smith give a strong-name for Jones that matches our strong name?
            //
            // Before we dive into the details, we should mention two additional facts:
            //
            // * If the answer to q1 is "yes", and Smith was compiled by the C# compiler, then q2 must be "yes" also.
            //   Strong-named Smith must only be friends with strong-named Jones. See the blog article
            //   http://blogs.msdn.com/b/ericlippert/archive/2009/06/04/alas-smith-and-jones.aspx
            //   for an explanation of why this feature is desirable.
            //
            //   Now, just because the compiler enforces this rule does not mean that we will never run into
            //   a scenario where Smith is strong-named and names Jones via a weak name. Not all assemblies
            //   were compiled with the C# compiler. We still need to deal sensibly with this situation.
            //   We do so by ignoring the problem; if strong-named Smith extends friendship to weak-named
            //   Jones then we're done; any assembly named Jones is a friend of Smith.
            //
            //   Incidentally, the compiler produces error CS1726, ERR_FriendAssemblySNReq, when compiling
            //   a strong-named Smith that names a weak-named Jones as its friend.
            //
            // * If the answer to q1 is "no" and the answer to q3 is "yes" then we are in a situation where
            //   strong-named Jones is referencing weak-named Smith, which is illegal. In the dev10 compiler
            //   we do not give an error about this until emit time. In Roslyn we have a new error, CS7029,
            //   which we give before emit time when we detect that weak-named Smith has given friend access
            //   to strong-named Jones, which then references Smith. However, we still want to give friend
            //   access to Jones for the purposes of semantic analysis.
            //
            // TODO: Roslyn does not yet give an error in other circumstances whereby a strong-named assembly
            // TODO: references a weak-named assembly.
            //
            // Let's make a chart that illustrates all the possible answers to these four questions, and
            // what the resulting accessibility should be:
            //
            // case q1  q2  q3  q4  Result                 Explanation
            // 1    YES YES YES YES SUCCESS          Smith has named this strong-named Jones as a friend.
            // 2    YES YES YES NO  NO MATCH         Smith has named a different strong-named Jones as a friend.
            // 3    YES YES NO  NO  NO MATCH         Smith has named a strong-named Jones as a friend, but this Jones is weak-named.
            // 4    YES NO  YES NO  SUCCESS          Smith has improperly (*) named any Jones as its friend. But we honor its offer of friendship.
            // 5    YES NO  NO  NO  SUCCESS          Smith has improperly (*) named any Jones as its friend. But we honor its offer of friendship.
            // 6    NO  YES YES YES SUCCESS, BAD REF Smith has named this strong-named Jones as a friend, but Jones should not be referring to a weak-named Smith.
            // 7    NO  YES YES NO  NO MATCH         Smith has named a different strong-named Jones as a friend.
            // 8    NO  YES NO  NO  NO MATCH         Smith has named a strong-named Jones as a friend, but this Jones is weak-named.
            // 9    NO  NO  YES NO  SUCCESS, BAD REF Smith has named any Jones as a friend, but Jones should not be referring to a weak-named Smith.
            // 10   NO  NO  NO  NO  SUCCESS          Smith has named any Jones as its friend.
            //
            // (*) Smith was not built with C#, which would have prevented this.
            //
            // This method never returns NoRelationshipClaimed because if control got here, then we know that
            // Smith named Jones as a friend somehow.
            //
            // All that said, we also have an easy out here. Suppose Smith names Jones as a friend, and Jones is
            // being compiled as a module, not as an assembly. You can only strong-name an assembly. So if this module
            // is named Jones, and Smith is extending friend access to Jones, then we are going to optimistically
            // assume that Jones is going to be compiled into an assembly with a matching strong name, if necessary.

            CSharpCompilation compilation = this.DeclaringCompilation;
            if (compilation != null && compilation.Options.OutputKind.IsNetModule())
            {
                return IVTConclusion.Match;
            }

            bool q1 = otherIdentity.IsStrongName;
            bool q2 = !key.IsDefaultOrEmpty;
            bool q3 = !this.PublicKey.IsDefaultOrEmpty;
            bool q4 = (q2 & q3) && ByteSequenceComparer.Equals(key, this.PublicKey);

            // Cases 2, 3, 7 and 8:
            if (q2 && !q4)
            {
                return IVTConclusion.PublicKeyDoesntMatch;
            }

            // Cases 6 and 9:
            if (!q1 && q3)
            {
                return IVTConclusion.OneSignedOneNot;
            }

            // Cases 1, 4, 5 and 10:
            return IVTConclusion.Match;
        }

        #region IAssemblySymbol Members

        INamespaceSymbol IAssemblySymbol.GlobalNamespace
        {
            get
            {
                return this.GlobalNamespace;
            }
        }

        IEnumerable<IModuleSymbol> IAssemblySymbol.Modules
        {
            get
            {
                return this.Modules;
            }
        }

        /// <summary>
        /// If this symbol represents a metadata assembly returns the underlying <see cref="AssemblyMetadata"/>.
        ///
        /// Otherwise, this returns <code>null</code>.
        /// </summary>
        public abstract AssemblyMetadata GetMetadata();

        INamedTypeSymbol IAssemblySymbol.ResolveForwardedType(string fullyQualifiedMetadataName)
        {
            return ResolveForwardedType(fullyQualifiedMetadataName);
        }

        bool IAssemblySymbol.GivesAccessTo(IAssemblySymbol assemblyWantingAccess)
        {
            if (Equals(this, assemblyWantingAccess))
            {
                return true;
            }

            var assembly = assemblyWantingAccess as AssemblySymbol;
            if (assembly == null)
            {
                return false;
            }

            var myKeys = GetInternalsVisibleToPublicKeys(assembly.Identity.Name);
            foreach (var key in myKeys)
            {
                IVTConclusion conclusion = assembly.PerformIVTCheck(key, this.Identity);
                Debug.Assert(conclusion != IVTConclusion.NoRelationshipClaimed);
                if (conclusion == IVTConclusion.Match || conclusion == IVTConclusion.OneSignedOneNot)
                {
                    return true;
                }
            }

            return false;
        }

        INamedTypeSymbol IAssemblySymbol.GetTypeByMetadataName(string metadataName)
        {
            return this.GetTypeByMetadataName(metadataName);
        }

        #endregion

        #region ISymbol Members

        public override void Accept(SymbolVisitor visitor)
        {
            visitor.VisitAssembly(this);
        }

        public override TResult Accept<TResult>(SymbolVisitor<TResult> visitor)
        {
            return visitor.VisitAssembly(this);
        }

        #endregion
    }
}

redpajama_set_name: RedPajamaGithub