public void Visit(CorporateHangar hangar)
        {
            Visit((Container)hangar);

            if (_error != ErrorCodes.NoError)
            {
                return;
            }

            if (hangar.IsLeaseExpired && _access != ContainerAccess.LogList)
            {
                _error = ErrorCodes.CorporationHangarLeaseExpired;
                return;
            }

            if (!(_access == ContainerAccess.LogList || _access == ContainerAccess.LogClear || _access == ContainerAccess.LogStart ||
                  _access == ContainerAccess.List || _access == ContainerAccess.LogStop))
            {
                _error = CheckDockedState(hangar);
                if (_error != ErrorCodes.NoError)
                {
                    return;
                }
            }

            //is the owner of this container is the corporation the character is a member of?
            var corpEid = _character.CorporationEid;

            if (DefaultCorporationDataCache.IsCorporationDefault(corpEid))
            {
                _error = ErrorCodes.CharacterMustBeInPrivateCorporation;
                return;
            }

            if (!Corporation.Exists(corpEid))
            {
                Logger.Error("a character found with a non-existing corporationEID. characterID:" + _character + " corpEID:" + corpEid);
                _error = ErrorCodes.InsufficientPrivileges; //no such corporation
                return;
            }

            if (hangar.Owner != corpEid)
            {
                _error = ErrorCodes.InsufficientPrivileges;
                return;
            }

            //if his corporation owns this container
            //check role
            var memberRole = Corporation.GetRoleFromSql(_character);

            if (!hangar.HasAccess(memberRole, _access))
            {
                _error = ErrorCodes.InsufficientPrivileges;
            }
        }