public Member CreatePublicMember(
                    IStaticScope scope,
                    IHavePublicMembers havePublicMembers,
                    IKey key)
                {
                    var res = new Member(this, key.ToString() !);

                    HasPublicMember(havePublicMembers, key, res);
                    res.Context = Possibly.Is(scope);
                    return(res);
                }
                public Member CreatePublicMember(
                    IHavePublicMembers scope,
                    IKey key,
                    IOrType <MethodType, Type, Object, OrType, InferredType, GenericTypeParameter, IError> type)
                {
                    var res = new Member(this, key.ToString() !);

                    HasPublicMember(scope, key, res);
                    res.LooksUp = Possibly.Is(type);
                    return(res);
                }
                public Member CreatePublicMember(
                    IStaticScope scope,
                    IHavePublicMembers havePublicMembers,
                    IKey key,
                    IOrType <IKey, IError> typeKey)
                {
                    var res = new Member(this, key.ToString() !);

                    HasPublicMember(havePublicMembers, key, res);
                    res.Context = Possibly.Is(scope);
                    res.TypeKey = typeKey.SwitchReturns(x => Prototypist.Toolbox.OrType.Make <IKey, IError, Unset>(x), x => Prototypist.Toolbox.OrType.Make <IKey, IError, Unset>(x));
                    return(res);
                }
 public static void HasPublicMember(IHavePublicMembers parent, IKey key, Member member)
 {
     parent.PublicMembers.Add(key, member);
 }