IsValid changed to private, more accurate exception thrown
Basic implementation of field
Used IList to track portals created
Inherit also the EqualityComparer class so that collections can use value equality on portals
Included more unit tests